PCL-1.8 源码包完全编译(WIN7/VS2013/x64)

转载自:http://www.lai18.com/content/2483374.html

PCL集成了很多有名的处理3D点云的算法,学习使用PCL以及了解背后的算法非常重要。最新版本更是会有许多新算法的实现,这也是我自已动手编译PCL1.8的直接原因.本教程在WIN8系统 VS2013环境 x64平台编译并配置,主要参考文章http://blog.csdn.net/aptx704610875/article/details/49947049.

但也不尽相同(不同环境总会有不同的问题).Herewe go~~


使用工具:

VS2013

CMAKE3.3



第三方库:

Boost1.59.0

Eigen3.2.7

FLANN1.8.4

Qhull2015.2

VTK6.3.0

OpenNI2.2.0.33 Beta (OpenNI 2.X直接安装就好,注意下载正确的版本就行)



前戏:第三方库的编译配置

Boost 1.59.0

首先下载微软的mpi,然后在boost\tools\build\src\tools中找到mpi.jam,修改其中的这三行:
249 line local cluster_pack_path_native = "C:\\ProgramFiles\\Microsoft MPI" ;
251 line if [ GLOB $(cluster_pack_path_native)\\Inc : mpi.h ]
260 line options = <include>$(cluster_pack_path)/Inc
然后打开cmd,进入boost文件夹,运行bootstrap.bat,运行结束后会生成project-config.jam,打开并在第四行加上:using mpi ; 接下来还是用cmd进入boost文件夹,运行:b2.exe toolset=msvc-12.0 address-model=32--build-dir=build\x86 install --prefix="C:\Program Files\Boost" -j8注意如果要开发x64的程序而不是64位系统,请运行:b2.exe
toolset=msvc-12.0 address-model=64--build-dir=build\x64 install --prefix="X:\X\Boost" -j8(其中没事msvc-12.0代表vs2013,如果是11.0是vs2012,14.0是vs2015后面的C:\Program Files\Boost是boost的文件夹,b2.exe就在里面)然后等着就好了,时间有点久,耐心等。完成后在环境变量中建立BOOST_ROOT变量,值为boost文件夹地址C:\Program Files\Boost.
注:我下载的是boost_1_59_0-msvc-12-64安装版(EXE),安装后我以为不需要再按如上所述操作,然而情况是这里的安装只是将文件解压到安装路径了而已,在对PCL进行CMAKE时找不到BOOST,还需要按上述操作一遍才行.

Eigen 3.2.7
使用cmake,分别设置eigen的source和build路径,如build不存在,点击Configure会提示新建build文件夹,选择vs12-2013编译器,然后Generate。这里注意Configure时有CMAKE_INSTALL_PREFIX这个选项,很重要,默认为C:\Program Files\Eigen.这里的路径即为该软件最后的安装路径(也是环境变量中要设置的EIGEN_ROOT的路径,可设置为你想要的其它路径,后边的FLANN,QHULL,VTK也是一样道理).在参考文章中作者提到”要将该选项更改为源码所在文件夹,不然INSTALL时会出错”.其实不然,只要工程Generate后以管理员身份运行VS2013(右键-以管理员身份运行),再打开eigen.sln工程就不会有问题,待加载完文件后,生成ALL_BUILD(Debug
和 Release均要生成),完成后生成INSTALL(Debug and Release)。可以看到eigen安装路径中出现include文件夹。最后在环境变量中建立EIGEN_ROOT变量,值为eigen的安装路径。
注:参考文献中作者提到安装路径下会生成include和lib文件夹,但在我编译和安装中只有include文件夹,并没有lib文件夹(我觉得他应该搞错了).

FLANN 1.8.4

使用cmake,分别设置Flann的source和build路径(如C:\flann,C:\flann\build),选择vs12-2013编译器.注意根据需要修改CMAKE_INSTALL_PREFIX,然后添加一个entry:

Name: CMAKE_DEBUG_POSTFIX

Type: STRING

Value: -gd

修改完后再次点Configure,然后Generate。在C:\flann\src\cpp\flann\util(源码)中找到serialization.h文件 在92行BASIC_TYPE_SERIALIZER(bool)之后加入以下代码:

#ifdef _MSC_VER

BASIC_TYPE_SERIALIZER( unsigned __int64 );//注意此处__int64是两个下划线连一起

#endif

修改完后以管理员身份运行VS2013并打开flann.sln工程文件,待加载完文件后,(debug和release)生成all_build,完成后生成install(Debugand Release)。完成后可以看到flann安装路径下出现include和lib文件夹。最后在环境变量中建立FLANN_ROOT变量,值为flann安装路径。

Qhull 2015.2
使用cmake,分别设置qhull的source和build路径,如build不存在,点击Configure会提示新建build文件夹,选择vs12-2013-win64编译器.注意根据需要修改CMAKE_INSTALL_PREFIX,然后添加一个entry:

Name: CMAKE_DEBUG_POSTFIX

Type: STRING

Value: -d

修改完后再次点Configure,然后Generate。以管理员身份运行VS2013并打开qhull.sln工程文件,待加载完文件后,完成后生成ALL_BUILD(debug和release),然后生成INSTALL(Debugand Release)。完成后可以看到qhull安装路径中出现include和lib文件夹。最后在环境变量中建立QHULL_ROOT变量,值为qhull安装地址。
注:参考文献中作者提到需要在生成ALL_BUILD前 ”修改libqhull和user_eg2的项目属性,C/C++
-> 高级 ->编译为 C++代码
(/TP)”.也许对他所用的Qhull 2012.1版本需要,但通过测试了现对这里所用的Qhull 2015.2无需进行此操作,不然反倒编译出错.

VTK6.3.0
使使用cmake,分别设置eigen的source和build路径,如build不存在,点击Configure会提示新建build文件夹,选择vs12-2013-win64编译器.注意根据需要修改CMAKE_INSTALL_PREFIX选项,然后添加一个entry:

Name: CMAKE_DEBUG_POSTFIX

Type: STRING

Value: -gd

修改完后再次点Configure,然后Generate。以管理员身份运行VS2013并打开VTK.sln工程文件,待加载完文件后,生成ALL_BUILD(debug和release)(时间有点久,耐心等待),完成后生成install(debug和release)。完成后可以看到VTK文件夹中出现include和lib文件夹。最后在环境变量中建立VTK_ROOT,为VTK安装路径.
注:感觉VTK_ROOT这个环境变量貌似并没什么用.

高潮:配置PCL-1.8
使用cmake选择source和build文件夹,such as:
Where is the source code: C:\PCL-master\source

Where is build the binaries: C:\PCL-master\build

点击Configure,选择vs12-2013-win64编译器,正常情况下不会出现什么问题(我的有点小问题,见后边注解),注意根据需要修改CMAKE_INSTALL_PREFIX(我的路径为C:\ProgramFiles\PCL),再次点击Configure,然后generate生成.以管理员身份运行VS2013并打开PCL.sln,生成ALL_BUILD(Debug和Release模式,各自得半小时左右)
成功后到build文件夹中找到cmake_install.cmake修改第46行:
file(INSTALL DESTINATION"${CMAKE_INSTALL_PREFIX}/3rdParty/Boost" TYPE DIRECTORY FILES "C:/ProgramFiles/Boost/" REGEX "/[^/]*\\/uninstall\\.exe$" EXCLUDE) 其中C:/Program Files/Boost/为boost所在文件夹。也可以检查一下上下文中其他第三方库的文件夹地址有没有正确,错误的可以改正。
我的截图如下:



随后生成INSTALL(Debug and Release)将PCL-1.8成功安装.
最后在环境变量中建立PCL_ROOT变量,值为PCL安装路径。在PATH中加入%PCL_ROOT%\bin;%PCL_ROOT%\3rdParty\Qhull\bin;%PCL_ROOT%\3rdParty\Flann\bin;%PCL_ROOT%\3rdParty\VTK\bin 注意每个分号后不能出现空格,不然运行工程时会出现找不到需要的dll(血的教训啊!!!)
注:(1)在对PCL进行CMAKE时还是会出现VTK_DIR
NOT FOUND的情况,需要将VTD_DIR设为C:\Program Files\VTK\lib\cmake\vtk-6.3(即包含VTKConfig.cmake的路径)才可解决.
(2)在CMAKE进行Configure时,我的情况是需要将global_tests及examples等几个库选掉,才可通过.
(3)另外,还出现了一个情况,在生成INSTALL时,发现有几个库没有生成xxx_debug.dll(印象中有pcl_search_debug.dll,
pcl_sample_consensus_debug.dll,pcl_ml_debug.dll, pcl_io_debug.dll等几个.但是ALL_BUILD明明在debug模式下生成是通过了的.Release模式下没有出现问题),导致INSTALL不成功.可能是因为我在睡觉前操作的生成,在机子运行中有暂停或什么导致的吧.在将这几个工程一个个重新在debug模式下生成后INSTALL顺利完成.

至此,PCL编译配置完成!新出锅的PCL-1.8经过简单测试后没有出现问题,最担心的点云显示也正常,终于可以飞起了,希望大家也都顺利编译成功!
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值