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知道库和头文件的位置,这里有两种方法:

  1. 找到IDE或者编译器的/lib/include文件夹,添加GLFW的include文件夹里的文件到IDE的/include文件夹里去。用类似的方法,将glfw3.lib添加到/lib文件夹里去。虽然这样能工作,但这不是推荐的方式,因为这样会让你很难去管理库和include文件,而且重新安装IDE或编译器可能会导致这些文件丢失
  2. 建立一个新的目录包含所有的第三方库文件和头文件,并且在你的IDE或编译器中指定这些文件夹,再OpenGL的项目中,我使用一个单独的文件夹,里面包含LibsInclude文件夹,在这里存放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傻瓜教程的更多相关文章

  1. Ogre 1.7.0,VS2005编译全过程傻瓜式教程

    最近下了最新版Ogre 1.7.0,从下载到最后编译运行成功Ogre自带的Sample花了将近一下午时间. 网上有很多编译Ogre的教程,这里整理我看过的教程,加上自己的经验再详细总结一遍. 第一步: ...

  2. 零基础图文傻瓜教程接入Facebook的sdk

    零基础图文傻瓜教程接入Facebook的sdk 本人视频教程系类   iOS中CALayer的使用 0. 先解决你的 VPN FQ上外网问题,亲,解决这一步才能进行后续操作^_^. 1. 点击右侧链接 ...

  3. [matlab] MATLAB 界面编程 傻瓜教程

    >_<:在 MATLAB 的命令窗口(Command Window)中运行 guide 命令,来打开 GUIDE 界面,如下: >_<:然后,选择空模板(Blang GUI), ...

  4. VS2012 编译 Assimp

    VS2012 编译 Assimp 环境: assimp-3.1.1Windows 7 64BitVisual Studio 2012CMake 2.8.12.1 注意: 在Windows中编译assi ...

  5. 在Windows下使用MinGW静态编译Assimp

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

  6. 在Ubuntu下编译Assimp库

    在Ubuntu下编译Assimp库 怎样在Ubuntu下编译Assimp库?这是我曾经编译成功后做的笔记,供參考. 1.去以下的站点去下载Assimp库: http://assimp.sourcefo ...

  7. 在Windows通过使用MinGW静态编译Assimp

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

  8. Qt5.5.1和Qt5.3.2编译OCI驱动教程及验证方法

    我们都知道oracle数据库的强大,并且好多企业或者教学用到数据库时都会推荐使用.但是Qt因为版权问题没有封装oracle数据库专用驱动,网上也有一大堆说法和教程,但是或多或少的都有问题.下面废话不多 ...

  9. Windows环境下编译Assimp库生成Android可用的.so或.a文件

    在做项目过程中需要使用Assimp这个3D模型读取库来读取obj格式的模型,因为项目是基于Android平台,采用NDK开发,所以就打算编译Assimp库并生成.so文件.本文使用Assimp-v.5 ...

随机推荐

  1. 预学第三天:Ge常用t快捷键,码云,Git使用

    目录 Get常用快捷键 码云及Git的使用 Get常用快捷键 git init #创建一个本地的仓库 **gie add test.txt #指定文件添加 ***git add . #当前文件夹下所有 ...

  2. select语句中不应该数据库关键字(如:precision)

    解决方案: 在关键字左右家特殊小点,在esc键的下面.(不是单引号) 如:`precision` 也可以在字段前加上表名.

  3. 网页缓存相关的HTTP头部信息详解

    前言 之前看完了李智慧老师著的<大型网站技术架构-核心原理与案例分析>这本书,书中多次提起浏览器缓存的话题,恰是这几天生产又遇到了一个与缓存的问题,发现自己书是没少看,正经走心的内容却不多 ...

  4. 小记---idea springboot 报错没有get或者set方法

    给idea 安装一个插件即可

  5. c语言的strcpy函数

    strcpy是用于复制字符串的函数 上面这个程序输出的结果为 为什么输出字符串%s时s是abABC,而输出字符%c时s是abABCg呢 因为strcpy函数本身的性质:复制字符串直到’\0’结束符为止 ...

  6. 阅读nopcommerce startup源码

    创建一个asp.net core项目,可以到到startup类有两个方法 // This method gets called by the runtime. Use this method to a ...

  7. git删除分支步骤

    在本地删除一个分支: git branch -D <本地分支> 在github远程端删除一个分支: git push origin :<远程端分支> 唯一不同的就是冒号代表了删 ...

  8. JVM内存结构 VS Java内存模型 VS Java对象模型

    前面几篇文章中, 系统的学习了下JVM内存结构.Java内存模型.Java对象模型, 但是发现自己还是对这三者的概念和区别比较模糊, 傻傻分不清楚.所以就有了这篇文章, 本文主要是对这三个技术点再做一 ...

  9. 用scrapy爬取搜狗Lofter图片

    用scrapy爬取搜狗Lofter图片 # -*- coding: utf-8 -*- import json import scrapy from scrapy.http import Reques ...

  10. ECharts图表插件(4.x版本)使用(一、关系图force节点显示为自定义图像/图片,带分类选择)

    导读 ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safar ...