编译Assimp傻瓜教程
assimp的编译过程和搭建OpenGL环境时glfw的编译基本相同,建议先阅读环境搭建
下载源码
这里使用的是3.3.1版本,Github下载assimp源码

解压完你会得到

接下来我们要编译这些源码
为什么要在自己机器上编译?因为从源代码编译库可以保证生成的库是兼容你的操作系统和CPU的,而预编译的二进制文件可能会出现兼容问题(甚至有时候没提供支持你系统的文件)
但是提供源代码所产生的一个问题在于不是每个人都用相同的IDE开发程序,因而源码提供的工程/解决方案文件可能和一些IDE不兼容,人们只能从.c/.cpp和.h/.hpp文件来自己建立工程/解决方案,这是一项枯燥的工作,但因此也诞生了一个叫做CMake的工具
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知道库和头文件的位置,这里有两种方法:
- 找到IDE或者编译器的/lib和/include文件夹,添加GLFW的include文件夹里的文件到IDE的/include文件夹里去。用类似的方法,将glfw3.lib添加到/lib文件夹里去。虽然这样能工作,但这不是推荐的方式,因为这样会让你很难去管理库和include文件,而且重新安装IDE或编译器可能会导致这些文件丢失
- 建立一个新的目录包含所有的第三方库文件和头文件,并且在你的IDE或编译器中指定这些文件夹,再OpenGL的项目中,我使用一个单独的文件夹,里面包含Libs和Include文件夹,在这里存放OpenGL工程用到的所有第三方库和头文件,这样我的所有第三方库都在同一个位置(并且可以共享至多台设备),当然,这要求你每次新建一个工程时都需要告诉IDE/编译器在哪能找到这些目录
和glfw的导入一样,这里推荐第二种方法,接下来我们先把生成的库文件和头文件导入工程,并且告诉IDE/编译器在哪能找到他们的目录
库文件
我们打开build目录,生成的库文件就在 build\code\Debug 路径下,我们需要的是下面这两个文件

将他们复制到你要用到assimp的工程目录下的库目录,这里我放到了OpenGL学习项目下的,glfw3.lib所在的文件夹里,路径为 FirstOpenGL\Libraries\Lib,这样我就不必重新设定库目录

头文件
assimp用到的头文件在我们build文件夹的同级目录include下,路径为assimp-3.3.1\include\assimp,我这里直接将assimp文件夹复制到我工程的Include目录

接下来我们打开工程属性,再配置一番

设置引用目录和库目录,由于我放的就是之前使用的目录,这里不必更改

连接器部分则需要把assimp加上

尝试include我们导入的头文件

没有报错,OK大功告成
编译Assimp傻瓜教程的更多相关文章
- Ogre 1.7.0,VS2005编译全过程傻瓜式教程
最近下了最新版Ogre 1.7.0,从下载到最后编译运行成功Ogre自带的Sample花了将近一下午时间. 网上有很多编译Ogre的教程,这里整理我看过的教程,加上自己的经验再详细总结一遍. 第一步: ...
- 零基础图文傻瓜教程接入Facebook的sdk
零基础图文傻瓜教程接入Facebook的sdk 本人视频教程系类 iOS中CALayer的使用 0. 先解决你的 VPN FQ上外网问题,亲,解决这一步才能进行后续操作^_^. 1. 点击右侧链接 ...
- [matlab] MATLAB 界面编程 傻瓜教程
>_<:在 MATLAB 的命令窗口(Command Window)中运行 guide 命令,来打开 GUIDE 界面,如下: >_<:然后,选择空模板(Blang GUI), ...
- VS2012 编译 Assimp
VS2012 编译 Assimp 环境: assimp-3.1.1Windows 7 64BitVisual Studio 2012CMake 2.8.12.1 注意: 在Windows中编译assi ...
- 在Windows下使用MinGW静态编译Assimp
使用MinGW静态编译Assimp 到了5月份了,没有写一篇日志,于是自己从知识库里面拿出一篇文章充数吧.这次将要解说怎样在Windows下使用MinGW静态编译Assimp. Assimp是眼下比較 ...
- 在Ubuntu下编译Assimp库
在Ubuntu下编译Assimp库 怎样在Ubuntu下编译Assimp库?这是我曾经编译成功后做的笔记,供參考. 1.去以下的站点去下载Assimp库: http://assimp.sourcefo ...
- 在Windows通过使用MinGW静态编译Assimp
使用MinGW静态编译Assimp 到了5月份了.没有写一篇日志,于是自己从知识库里面拿出一篇文章充数吧.这次将要解说怎样在Windows下使用MinGW静态编译Assimp. Assimp是眼下比較 ...
- Qt5.5.1和Qt5.3.2编译OCI驱动教程及验证方法
我们都知道oracle数据库的强大,并且好多企业或者教学用到数据库时都会推荐使用.但是Qt因为版权问题没有封装oracle数据库专用驱动,网上也有一大堆说法和教程,但是或多或少的都有问题.下面废话不多 ...
- Windows环境下编译Assimp库生成Android可用的.so或.a文件
在做项目过程中需要使用Assimp这个3D模型读取库来读取obj格式的模型,因为项目是基于Android平台,采用NDK开发,所以就打算编译Assimp库并生成.so文件.本文使用Assimp-v.5 ...
随机推荐
- 微信小程序开发--API界面交互
一.wx:showActionSheet(上拉菜单) 属性 类型 默认值 必填 说明 itemList Array.<string> 是 按钮的文字数组,数组长度最大为 6 itemC ...
- tomcat配置https以及配置完成后提示服务器缺少中间证书(已解决)
#### tomcat配置https 准备工作 下载好证书文件,下载的时候可以选择为tomcat文件.我这下载下来是压缩包.解压后就是下图的样子. 以.key结尾的文件是证书的key 以.pem结尾的 ...
- Java编程思想:文件加锁
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; i ...
- 打开pycharm,提示invalid Log Path【已解决】
问题:打开pycharm,提示invalid Log Path 解决: 网上其他方法都说重装,这个成本有点高,所以我不去尝试. 因为我下载的是免安装版,所以使用时生成的文件是后来才生成的,所以我尝试 ...
- tomcat不需要重启热部署xml文件
项目中,遇到情况,有时候增加struts的配置了,有时候粗心改错了,然后急需要发布线上吧,又不能重启影响其他的,最后发现struts有这个功能呢! 在struts.xml的配置文件中加上一句话就行 & ...
- TreeMap原理实现及常用方法
目录 一. TreeMap概述 二. 红黑树回顾 三. TreeMap构造 四. put方法 五. get 方法 六. remove方法 七. 遍历 八. 总结 前面我们分别讲了Map接口的两个实现类 ...
- Excel催化剂开源第32波-VSTO开发的插件让WPS顺利调用的方法-注册表增加注册信息
VSTO插件开发完成后,鉴于现在WPS用户也不少,很多时候用户没办法用OFFICE软件,只能在WPS环境下办公,VSTO开发的插件,只需增加一句注册表信息,即可让WPS识别到并调用VSTO开发的功能, ...
- MySql的数据库优化到底优啥了都??(1)
嘟嘟最不愿意做的就是翻招聘信息. 因为一翻招聘信息,工作经历你写低于两年都不好意思,前后端必须炉火纯青融汇贯通,各式框架必须如数家珍不写精通咋的你也得熟练熟练, 对了你是985吗?你是211吗??你不 ...
- sql format 格式化数字(前面补0)
将一个数字例如33,或1使用t-sql语句转换成033或001 以下是详细分析: 1.select power(10,3)得到1000 2.select cast(1000+33 as varchar ...
- 解读equals()和hashCode()
前面部分摘自:https://blog.csdn.net/javazejian/article/details/51348320 一:Object中equals方法的实现原理 public boole ...