本着想看PCL源码,更加深入地理解PCL处理算法,所以想自己编译一下PCL库,真是费时费力,用了1周多时间,终于编译成功。
编译PCL库,需要第三方库文件:
第三方库名 | 说明 |
---|---|
VTK | visualization toolkit,基于OPENGL封装,主要用于三维计算机图形学、图像处理和可视化 |
boost | 是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称(Regex正则表达式库,Spirit,LL parser framework,Graph,Lambda,concept check,Mpl,Thread,Python,Pool,smart_ptr) |
FLANN | Fast Library for Approximate Nearest Neighbors,它是目前最完整的(近似)最近邻开源库。 |
OpenI | 是一个基于网络的商务智能应用程序。轻松可视化OLAP数据,关系型数据库管理系统,数据挖掘工具和直观的建立和发布交互式的报告,分析 |
EIGEN | 是一个高层次的C ++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法 |
Qhull | 用于计算三维点的凸包 |
资料准备:
- 确保安装环境,本机为Windows10 1909 X64位操作系统,已安装VS2017
- 安装QT 5.12.5版本
- PCL-1.9.1-AllInOne-msvc2017-win64.exe
- PCL-1.9.1源码
- cmake-3.13.5-win64-x64,中途下过很多版本,发现这个版本挺好用的
- 第三方库源码
准备说明:
- 编译PCL库,需要第三方库,当然需要下载每一个第三方库源码,然后使用Cmake编译。也可以先安装PCL-1.9.1-AllInOne-msvc2017-win64.exe,安装过程中会有PCL-1.9.1配套的已编译成功的第三方库的头文件及库文件,我们只需要引用别人编译成功的库文件即可,而且PCL版本与第三方库文件的版本也是配套的,比如boost版本是1.68的,VTK是8.1的,一开始第三方库版本我也没注意,躺了很多坑。
安装PCL-1.9.1-AllInOne的时候,一定要安装一个没有空格的路径,默认安装的文件夹“Program Files” 和 “PCL 1.9.1”都会有空格,导致后期QT想引用库的时候,无法识别!
- 需要修改PCL1.9.1源码文件里面pcl_find_boost.cmake文件,
“…/pcl-pcl-1.9.1/cmake/pcl_find_boost.cmake”文件,使用Notepad++打开,在“set(Boost_ADDITIONAL_VERSIONS”,下一行添加boost版本,如下图所示
Cmake编译
- 打开cmake3.13.5,设置源码路径和编译路径,注意一定要勾选Grouped和Advanced,否则后面无法找到Boost路径配置,但是又报Boost_Root路径找不到的问题。
- 点击Configure,选择VS2017 win64
- 点击Generate
如果有些路径没有找到,需要根据实际库文件路径设置一下
boost
FLANN
OPENNI2
QHULL
Ungrouped Entries:
如果显示“Generating done”,表示生成成功,就可以去设置的binaries文件下找到VS的solution文件了。
- 打开sln文件,【生成】→【批生成】→【项目】中选定ALL_BUILD的Debug和Release版本,【生成】中打勾→点击【生成】按钮。
接下来VS就开始漫长的编译过程了…
足足等待了2小时,终于编译成功,230个成功,没有报错。
还没结束,同样的方法,再生成一下INSTALL,这个过程1~2分钟就能完成。
接下来,就享受源码的快了吧!
2020.6.11