目录
一 版本
Assimp官网上已经停止更新截至在3.3.1版本,但是这个版本编译是最稳定的,较新的版本需要在github上下载编译
- CMAKE: cmake的版本也要跟源码对应的差不多,可以参考二者的发布时间来取决于采用哪种编译。
- 如果因为版本问题出现的一些警告高者提示,如果是警告基本上不需要管,进行下一步就行,也可以根据警告提示,去CMAKE官网查看对应版本的更新来修改源码。
我使用的CMAKE版本是: CMAKE 3.20.0 --> 下载地址
软件包名-->cmake-3.20.0-rc1-windows-x86_64.msi
- 如果是linux下面操作逻辑是完全一致的,只不过命令行模式下可能需要手动配置一下环境变量
Assimp版本是 3.3.1--->https://github.com/assimp/assimp/tree/v3.3.1
二 编译问题
- 网上很多的编译报错提示说是需要DirectX的支持,但其实是不需要的,试想一下,DirectX可是只有windows支持的,那为openGL(跨平台的)编译一个导入数据的库,又怎么可以受到DirectX的影响呢(个人理解)。
- 对于较新版本的Assimp版本可能会报一些未定义的问题,这个就需要一步一步的去解决了,我这里只编译了最快并且最不容易出错的版本3.3.1
- 这个版本照着教程,即使系统中没有任何配置(oepnGL等库)也不会出问题.如果编译的库有问题,那需要检查一下环境变量(CMAKE,MingW等),如果在环境变量中有多个版本的mingw编译器,并且在后面的编译步骤中没有手动指定编译器,就有可能导致识别到别版本的编译器.
三 CMAKE准备
照着前面的地址会下载到一个Cmake-gui
- 前两步直接点击next就行,不再演示
- 这里选择为所有的用户都添加CMAKE的环境变量,并且创建了一个桌面图标
- 选择CMAKE的按照路径,其实这个也不是很大,根据个人喜好安装到指定位置就行
- 点击install等待安装完成即可
四 开始编译
4.1 准备Assimp源码
- 将前面地址的Assimp下载到本地文件夹中,不要用中文路径
4.2 编译工具准备
- 打开cmake-gui工具,在源码路径处选择,下载的源码的根目录,然后再编译路径下选择相同目录下的build目录
- build目录不存在,直接点击Yes构造时创建就行,也可以提前创建
- 选择构建工具MinGW MakeFiles
- 选中对应的MinGW编译器中的gcc和g++可执行文件就行,位于qt对应版本的tools目录下
- 点击Configure进行编译前配置
- 出现这种警告可以不用管,这是一些cmake版本升级后已经移除的一些配置,它上面说在2.8.12之后已经被移除了的一些规则,可能你是要2.8.12版本的cmake就不会有警告,但这不需要去更新cmake版本
- 再出现红色区域中的: Configuring done 就可以了、
- 点击Generate开始构建工程
- 生成Generating done表示构建成功
- 这时候CMAKE-GUI的工作就完成了,可以关闭了。
4.3 生成Assimp库
- 进入刚才构建的build目录,并且以管理员模式打开命令行,也可以按住shift键在右键菜单中打开powershell。
- 输入命令 mingw32-make -j8 等待执行完成
- 如果mingw32-make命令未发现,那么需要为mingw设置系统环境变量
mingw32-make -j8
- 这里其实已经链接并生成了libassimp.dll,查看日志后发现报错是因为在进行gtest环节无法正确链接到github上的源码,导致gtest构建中找不到CmakeList.txt文件,这并不影响库的使用
4.4 使用Assimp
4.4.1 准备
- 需要build/code目录下生成的libassimp.dll动态库
- 需要build目录下生成的revison头文件
- 需要源码SRC下面的assimp整个目录
4.4.2 加载模型
具体加载模型的知识后面补充后会在这里给出链接。
qt源码--->这里
- 首先创建一个include目录将准备好的assimp目录放进入,并且将revison头文件也放到assimp目录下
- 然后创建一个lib目录将libassimp.dll放进去,使用下面的方法在qt中就能使用asimp加载模型了。
INCLUDEPATH += $$PWD/include
LIBS += -L$$PWD/lib -lassimp
4.4.3 模型效果
- 如果是下载的源码,需要点击模型选择进行加载,默认没有加载任何模型