CMakeLists学习——指定OpenCV, PCL版本

本文介绍了如何在CMakeLists.txt文件中指定OpenCV和PCL库的特定版本。对于OpenCV,可以通过find_package并设置EXACT和REQUIRED来指定版本,或者使用set指定OpenCV_DIR。对于PCL,必须包括版本的第三位数字,并同样使用find_package配合PCL_DIR。文章强调了正确指定版本和配置路径的重要性。
摘要由CSDN通过智能技术生成

前言

本篇记录一下在CMakeLists.txt中指定OpenCV, PCL的版本(可以举一反三到其他包的版本指定上)

首先需要明确CMakeLists的找包逻辑,可以参考find_package查找包,以及ld搜索链接库路径两篇博文。

OpenCV版本指定

如果指定的opencv的路径在/usr/local下安装了(并且根据教程把/usr/local/lib放到LD_LIBRARY_PATH中保证ld能找到动态库),或者是通过sudo apt安装的二进制包,则可以直接在find_package时指定版本:

# EXACT    表示版本必须一致,否则大版本一致即可
# REQUIED  表示必须找到该包,否则停止,于此相反的是QUIET,找不到包也不会报错
find_package(OpenCV 3.4.13 EXACT REQUIRED)

如果指定的opencv路径不满足以上条件,则需要通过set指定找包路径,这个路径是opencv的.cmake文件位置

# 设定优先找包路径
set(OpenCV_DIR /usr/local/share/OpenCV)
# 然后find_package找opencv时优先查找上面这个路径下的OpenCVConfig.cmake 文件
# 如果符合版本要求就使用,不符合就会去默认找包路径再其他opencv版本
find_package(OpenCV 3.4.13 EXACT REQUIRED)

PCL版本指定

PCL版本指定有个很有趣的地方,就是必须指定版本的第三位,否则就找不到这个指定的包(比如如果指定PCL 1.8,安装的版本是1.8.1和1.11.0,则cmake可能会使用1.11.0,如果指定EXACT,会报找不到对应的PCL版本)。

同样,假设PCL已经在默认搜索路径中了,那么可以直接:

find_package(PCL 1.8.1 EXACT REQUIRED)

还可以通过set指定找包路径,这个路径是pcl的.cmake文件位置:

set(PCL_DIR "/usr/local/share/pcl-1.11")
# 设定了PCL找包位置后,就会优先在这个路径找.cmake文件了
find_package(PCL REQUIRED)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值