本着想看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