CMake编译指定OpenCV版本、pcl版本

写在前面

本文转载自:
[1] cv_gordon. OpenCV和PCL的多版本管理 [EB/OL]. https://www.cnblogs.com/gdut-gordon/p/9164541.html, 2018-06-10/2021-08-28.
[2] 还是喜欢阴天. vtk编译问题踩坑-Ubuntu16.04编译切换pcl版本 [EB/OL]. https://zhuanlan.zhihu.com/p/220103511, 2020-09-06/2021-08-28.

一、CMake编译指定的OpenCV版本

设置库的路径同时显式指定版本(假定指定版本的opencv安装在 /usr/local 目录中)。

set(OpenCV_DIR /usr/local/opencv2/share/OpenCV)
FIND_PACKAGE( OpenCV 2.4.9 REQUIRED )

二、CMake编译指定的PCL版本

关于pcl。如果需要使用ros携带的pcl库,在CMakeLists.txt中添加如下命令行,

解决方法:在CMakeLists中的find_package前加入这条语句:

set(PCL_DIR "/usr/lib/x86_64-linux-gnu/cmake/pcl")   #该路径中存放*.cmake文件
find_package(PCL 1.7 REQUIRED)

CMakeLists的find_package命令是通过cmake文件来寻找指定的库版本和头文件路径的,这个路径一般设在了系统的环境变量里。

因为pcl-1.7默认的cmake文件就放在/usr/lib/x86_64-linux-gnu/cmake/pcl路径下,在CMakeLists中指定该路径后,系统就不会去默认寻找/usr/local/share/pcl-1.8路径下pcl-1.8的cmake文件了。你可以检查一下你电脑的这两个路径,看看是不是有pcl对应的cmake文件!

修改后cmake编译时输出:

-- Found PCL_MODELER: /usr/include/pcl-1.7  
-- looking for PCL_IN_HAND_SCANNER
-- Found PCL_IN_HAND_SCANNER: /usr/include/pcl-1.7  
-- looking for PCL_POINT_CLOUD_EDITOR
-- Found PCL_POINT_CLOUD_EDITOR: /usr/include/pcl-1.7

-- pcl link dir /usr/lib/x86_64-linux-gnu
-- pcl definition dir -DEIGEN_USE_NEW_STDVECTOR-DEIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET-DFLANN_STATIC-Dqh_QHpointer
-- pcl PCL_DIR dir /usr/lib/x86_64-linux-gnu/cmake/pcl

注意:如果更改后还是没效果,建议把build文件夹删除后,重新执行cmake… & make,检查编译输出。

参考链接

[1] cv_gordon. OpenCV和PCL的多版本管理 [EB/OL]. https://www.cnblogs.com/gdut-gordon/p/9164541.html, 2018-06-10/2021-08-28.
[2] 还是喜欢阴天. vtk编译问题踩坑-Ubuntu16.04编译切换pcl版本 [EB/OL]. https://zhuanlan.zhihu.com/p/220103511, 2020-09-06/2021-08-28.

你可能感兴趣的:(第三方库的安装与使用,opencv,PCL)