标签:环境 因此 ESS msdn 管理 源码 工程 sdn code
assimp的编译过程和搭建OpenGL环境时glfw的编译基本相同,建议先阅读环境搭建
这里使用的是3.3.1版本,Github下载assimp源码
解压完你会得到
接下来我们要编译这些源码
为什么要在自己机器上编译?因为从源代码编译库可以保证生成的库是兼容你的操作系统和CPU的,而预编译的二进制文件可能会出现兼容问题(甚至有时候没提供支持你系统的文件)
但是提供源代码所产生的一个问题在于不是每个人都用相同的IDE开发程序,因而源码提供的工程/解决方案文件可能和一些IDE不兼容,人们只能从.c/.cpp和.h/.hpp文件来自己建立工程/解决方案,这是一项枯燥的工作,但因此也诞生了一个叫做CMake的工具
CMake是一个工程文件生成工具 http://www.cmake.org/cmake/resources/software.html
我们可以使用预定义好的CMake脚本,根据自己的选择(像是Visual Studio, Code::Blocks, Eclipse)生成不同IDE的工程文件。这个工具就能让我们从GLFW源码里创建一个Visual Studio 2017工程文件,之后就能顺利编译
CMake需要一个源代码目录和一个存放编译结果的目标文件目录,源代码目录我们选择下载的assimp的源代码的根目录,然后我们在assimp下直接新建一个 build 文件夹作为目标目录
在设置完目录之后,点击Configure(设置)按钮,让CMake读取设置和源代码。我们接下来需要选择工程的生成器,这里我选择 Visual Studio 2017 (根据自己的IDE版本设定)CMake会显示可选的编译选项用来配置最终生成的库
这里我们使用默认设置,并再次点击Configure(设置)按钮保存设置,保存之后,点击Generate(生成)按钮,生成的工程文件会在你的build文件夹中,生成完之后我们就可以点Open Project,用你的IDE打开
注意,CMake在读取配置列表时,可能会报出DirectX库丢失的错误,报错如下:
Could not locate DirectX
CMake Error at cmake-modules/FindPkgMacros.cmake:110 (message):
Required library DirectX not found! Install the library (including dev packages)
and try again. If the library is already installed, set the missing variables
manually in cmake.
这个问题的解决方案是安装DirectX SDK
安装DirectX SDK时,可能遇到一个错误码为s1023
的错误,这种情况下,请在安装SDK之前根据这个先卸载C++ Redistributable package(s)
在因为CMake已经配置好了项目,所以我们直接点击 Build Solution(生成解决方案) 按钮
接下来你需要让IDE知道库和头文件的位置,这里有两种方法:
和glfw的导入一样,这里推荐第二种方法,接下来我们先把生成的库文件和头文件导入工程,并且告诉IDE/编译器在哪能找到他们的目录
我们打开build目录,生成的库文件就在 build\code\Debug 路径下,我们需要的是下面这两个文件
将.lib文件复制到你要用到assimp的工程目录下的库目录,这里我放到了OpenGL学习项目下的,glfw3.lib所在的文件夹里,路径为 FirstOpenGL\Libraries\Lib,这样我就不必重新设定库目录
将.dll动态链接库放在工程目录下
编译出的静态库其实里面只有定义,真正实现还是要去动态库去找,所以当你把它们放进项目配置里时,编译是通过的,但是动态库并不会打进程序里,所以你得把动态库放到项目工程目录下,也就是其实你需要把静态库放进项目配置中,而动态库放在项目目录中
assimp用到的头文件在我们build文件夹的同级目录include下,路径为assimp-3.3.1\include\assimp,我这里直接将assimp文件夹复制到我工程的Include目录
接下来我们打开工程属性,再配置一番
设置引用目录和库目录,由于我放的就是之前使用的目录,这里不必更改
连接器部分则需要把assimp加上
尝试include我们导入的头文件
没有报错,OK大功告成
标签:环境 因此 ESS msdn 管理 源码 工程 sdn code
原文地址:https://www.cnblogs.com/zhxmdefj/p/11374514.html