使用MinGW静态编译Assimp

到了5月份了,没有写一篇日志,于是自己从知识库里面拿出一篇文章充数吧。这次将要解说怎样在Windows下使用MinGW静态编译Assimp。

Assimp是眼下比較全的3D格式解析库了,熟悉3D游戏开发的同行都知道,3D的格式非常混乱,各种3D格式在不同场合都有他们特定的应用,游戏引擎仅仅可以解析少部分3D格式,很多其它有用的格式来自游戏公司自己定义的格式。而在开源领域,Assimp算是比較全的3D格式导入库了。它对3D格式理解深入,非常适合整合至3D图形引擎中,让你们的程序支持很多其它3D的格式。

要静态编译Assimp,首先须要准备Assimp的源代码、cmake和MinGW。MinGW我选用的是Qt自带的库,大家能够自己选择合适的MinGW或是TDM-MinGW。这里我将Assimp的源代码和cmake分享一下,以便自己日后查阅。

Assimp下载地址:这里(提取码:60c5)

Cmake的下载地址:这里(提取码:46ac)

下载Assimp后,解压之,放在合适的位置,我这里放在E:/Develop中。

同一时候下载cmake后,解压之,放在合适的位置。我这里放在E:/Develop中。

然后cmd进入命令行,我们主要在命令行进行编译。

1、 首先环境变量设置,我这里是这么设置的:

set path=%path%;E:/Develop/cmake-2.8.12.1-win32-x86/bin;E:/Develop/Qt5.3/Tools/mingw482_32/bin

2、然后到assimp库的根文件夹下

cd $${Assimp文件夹}

3、使用cmake进行构建

cmake -G "MinGW Makefiles" ^
-DENABLE_BOOST_WORKAROUND=ON -DBUILD_STATIC_LIB=ON ^
-DCMAKE_RC_COMPILER=E:/Develop/Qt5.3/Tools/mingw482_32/bin/windres.exe ^
-DCMAKE_MAKE_PROGRAM=E:/Develop/Qt5.3/Tools/mingw482_32/bin/mingw32-make.exe ^
-DCMAKE_LFLAGS=-static ^
-DCMAKE_LFLAGS_DLL=-static ^
-DDX9_INCLUDE_PATH=E:/Develop/Qt5.3/Tools/mingw482_32/i686-w64-mingw32/include ^
-DD3D9_LIBRARY=E:/Develop/Qt5.3/Tools/mingw482_32/i686-w64-mingw32/lib/libd3d9.a ^
-DD3DX9_LIBRARY=E:/Develop/Qt5.3/Tools/mingw482_32/i686-w64-mingw32/lib/libd3dx9.a .

假设你的计算机安装了DirectX库,那么cmake会查找头文件以及库文件,不必设置DX9_INCLUDE_PATH、D3D9_LIBRARY和D3DX9_LIBRARY。

4、在mingw32-make之前,改动一下源码。由于编译会出现错误:

在$${Assimp文件夹}/include/assimp/types.h中改动:

在52行后加入#include <string.h>,即可了。

5、改动$${Assimp文件夹}/tools/assimp_view/CMakeFiles/assimp_viewer.dir/build.make中418行,删除$(RC_FLAGS);改动$${Assimp文件夹}/tools/assimp_cmd/CMakeFiles/assimp_cmd.dir/build.make中的58行,删除$(RC_FLAGS)

6、mingw32-make -j 4进行构建。假设顺利的话,libassimp.a以及assimp_cmd.exe和assimp_viewer.exe都会顺利地构建。

最后假设想要使用assimp_cmd.exe和assimp_viewer.exe的话,须要libgcc_s_dw2-1.dll、libstdc++-6.dll以及libwinpthread-1.dll,这些都能够在MinGW文件夹中找到,想要使用assimp_viewer的话还须要有d3dx9_43.dll。当然,我这里也分享了一份assimp_viewer,下载地址在这里

最新文章

  1. jQuery弹出提示信息简洁版(自动消失)
  2. c# DES加密解密
  3. 小波变换C++实现(一)----单层小波变换
  4. HDU 3090 (贪心)
  5. 一点ASP.NET MVC Html.Helper类的方法
  6. C#中sealed关键字
  7. c#关键字详解
  8. Linux命令行下cp,rm,mv命令的使用
  9. Java中Integer和String浅谈
  10. webpack 单独打包指定JS文件(CopyWebpackPlugin)
  11. Java装饰者模式
  12. netty中的ChannelHandler和ChannelPipeline
  13. Job for ssh.service failed because the control process exited with error code.......
  14. 记录修改安卓5.0系统浏览器UI遇到的部分问题
  15. JavaScript——DOM树的增查改删总结
  16. linux开机出现一下错误Give root password for maintenance (or type Control-D to continue):
  17. CentOS7安装tomcat9
  18. Node NPM 的常用配置
  19. TI DSP 6657 SRIO 简介
  20. 1415: 小ho的01串 [字符串]

热门文章

  1. EZ-USB FX2(68013)固件研究
  2. Mybatis 学习
  3. PS命令删除所有EXCHANGE2013内用户邮件
  4. Android 模拟登陆 保存密码(信息)到手机中 文件信息读取
  5. perl 对象
  6. maven install 跳过 测试 test
  7. (转载)JS事件监听 JS:attachEvent和addEventListener使用方法
  8. WinDbg配置和使用基础
  9. JavaScript高级程序设计60.pdf
  10. JavaScript高级程序设计22.pdf