转载请注明出处:http://my.csdn.NET/ye_shen_wei_mian
Pangolin是一个SLAM中常用的可视化库,在ORB-SLAM等等开源代码中都被用作可视化的工具使用,因此非常有用。本文讲述的是在Windows底下对Pangolin这个库进行build的过程,在这个过程中还是走了一点弯路,因此写此文以记之。
注意:此文仅代表Pangolin-0.5+Windows+VS2013(Update 5)的配置方法,其他的配置组合请自行探索。
配置工具要求以及IDE环境:(这里非常重要)
VS2013的版本必须是Update5的版本,普通的Ultimate版本目测不行,这是坑之一。
若以前已经安装好了VS2013的旧版本,而使用Update5的下载包直接更新到Update5版本而无法成功的话(比如我碰到的这样),就直接卸载原版本,安装Update5版本吧
若在VS2013底下build Pangolin,那么Pangolin的版本也不能使用从github上下载的最新的master版本,因为最新版本里面含有的一些语法(比如出现了的thread_local关键字)是VS2013不能兼容的,因此无法build成功,因此我们需要下载的是旧版本Pangolin-0.5(可以到这下载:http://download.csdn.net/download/ye_shen_wei_mian/10185830),这是坑之二。
然后要安装Git,之前没有Git的话可以到Git官网下一个Windows版本的安装好,这姑且不能算坑吧
好了,有了上面讲到的这些东西,就可以对Pangolin-0.5版本在VS2013(Update5)底下进行Build了:
具体步骤为:
(1)将Pangolin-0.5.zip解压到当前文件夹(比如我的当前文件夹是F:\Pangolin,之后的文章以这个为默认,不再赘述了),并且在解压出来的Pangolin-0.5下新建build文件夹。
(2)使用cmake对Pangolin-0.5进行配置,where is the source code路径为:F:/Pangolin/Pangolin-0.5,where to build the binaries路径为:F:/Pangolin/Pangolin-0.5/build
(3)在cmake中点击Configure后,这里最重要的是注意配置Ungrouped Entries中的EIGEN3_INCLUDE_DIR这一项,这一项为你计算机中Eigen3的路径(如果没有Eigen3的话请自行到Eigen的官网去下载),其他的我没有配置,如果需要用到也可以尝试去配置一下。然后点击Generate。
(4)找到build文件夹底下找到Pangolin.sln,打开,这个时候如果电脑里安装了360安全卫士的,要记得退出360安全卫士,不然它会阻止Git把我们要的东西远程拉下来的,这是坑之三。
(5)如果你在工程下已经有build好的需要一起使用的库,那么这个时候就要注意了。比如在Debug模式下,Pangolin-0.5的运行库默认是 多线程调试 (/MTd),如果之前已经build好的需要配套使用的别的库是 多线程调试DLL (/MDd)的话,那么build好了以后运行库类型不一致,会发生冲突错误。所以我们要注意之前的别的库到底运行库是什么版本的,然后Pangolin也就生成同样的版本。
比如说我之前的别的库的版本生成的是多线程DLL类型的,那么我就对pangolin那一项在Debug模式下改成多线程调试 DLL (/MDd),在Release模式下改成多线程 DLL (/MD),具体修改方法为:对pangolin那一项(不需要ALL_BUILD的话)右键属性->配置属性->C/C++->代码生成->运行库
这算是坑之四吧。
(3)在Debug和Release底下都build一遍pangolin,成功发现没有错误了以后就可以配置了。这里需要注意的是,是需要OpenGL32.Lib这么一个东西的,没有的话就去下一个吧,然后我把它放在了F:\OpenGL底下
就简单地列举下配置的东西好了
环境变量添加:
F:\Pangolin\Pangolin-0.5\build\external\glew\lib;
F:\Pangolin\Pangolin-0.5\build\external\libpng\bin;
F:\Pangolin\Pangolin-0.5\build\external\zlib\bin
包含目录:
F:\Pangolin\Pangolin-0.5\include
F:\Pangolin\Pangolin-0.5\build\src\include
F:\Pangolin\Pangolin-0.5\build\external\libjpeg\include
F:\Pangolin\Pangolin-0.5\build\external\glew\include
F:\Pangolin\Pangolin-0.5\build\external\libpng\include
F:\Pangolin\Pangolin-0.5\build\external\zlib\include
Debug下的库目录:
F:\Pangolin\Pangolin-0.5\build\src\Debug
F:\Pangolin\Pangolin-0.5\build\external\glew\lib
F:\Pangolin\Pangolin-0.5\build\external\libjpeg\lib
F:\Pangolin\Pangolin-0.5\build\external\libpng\lib
F:\Pangolin\Pangolin-0.5\build\external\zlib\lib
F:\OpenGL
Debug下的附加依赖项:
pangolin.lib
jpeg.lib
libpng16d.lib
zlibd.lib
glewd.lib
libglew_sharedd.lib
OpenGL32.Lib
Release下的库目录:
F:\Pangolin\Pangolin-0.5\build\src\Release
F:\Pangolin\Pangolin-0.5\build\external\glew\lib
F:\Pangolin\Pangolin-0.5\build\external\libjpeg\lib
F:\Pangolin\Pangolin-0.5\build\external\libpng\lib
F:\Pangolin\Pangolin-0.5\build\external\zlib\lib
F:\OpenGL
Release下的附加依赖项:
pangolin.lib
glew.lib
jpeg.lib
libpng16.lib
zlib.lib
libglew_shared.lib
OpenGL32.Lib
大概就是这样啦,祝大家Pangolin用的愉快