【CMake】find_package 命令

【find_package】基本调用形式
find_package(<PackageName> [version] [EXACT] [QUIET] [MODULE]
             [REQUIRED] 
             [[COMPONENTS] [components...]]
             [OPTIONAL_COMPONENTS components...]
             [NO_POLICY_SCOPE])

例如

find_package(fastcdr REQUIRED)
find_package(fastrtps REQUIRED)
find_package(asio QUIET)
find_package(CUDA)
include_directories(${CUDA_INCLUDE_DIRS})
功能

用于查找并载入一个外部包的设置命令

[QUIET] 选项

查找是否成功可以通过< PackageName >_FOUND变量的值得到。成功查找到包后,我们就可以导入包中的目标。

使用QUIET选项可以不显示查询过程中产生的信息,比如如果没有使用REQUIRED选项,即使包没有被找到,也不会显示任何信息。

[REQUIRED] 选项

使用REQUIRED选项后,如果包没有被找到,就会产生一个错误信息,中断处理。

例如:

find_package(GTest REQUIRED)
find_package(PCL REQUIRED)
find_package(Doxygen REQUIRED)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

find_package(yaml-cpp REQUIRED)
include_directories(${YAML_INCLUDE_DIRS})

find_package(gflags REQUIRED)
include_directories(${GFLAGS_INCLUDE_DIRS})

find_package(Ceres REQUIRED)
include_directories(${CERES_INCLUDE_DIRS})
[COMPONENTS] 选项

对于必须的包组件可以在 COMPONENTS 选项后列出(如果使用了REQUIRED选项,也可以在REQUIRED选项后列出)。

对于可选的包组件可以在 OPTIONAL_COMPONENTS 选项后列出。包自身定义了可用的包组件和包被认为找到的条件。

例 1

find_package(catkin REQUIRED COMPONENTS roscpp cv_bridge pcl_ros std_msgs message_generation)
include_directories(${catkin_INCLUDE_DIRS})
include_directories(${CMAKE/BINARY_DIR}/devel/include)

例 2

find_package(Boost REQUIRED 
			 COMPONENTS iostreams)
include_directories(${Boost_INCLUDE_DIRS})
find_package(Boost REQUIRED 
			 COMPONENTS filesystem system iostreams thread)
include_directories(${Boost_INCLUDE_DIRS})
find_package(Boost REQUIRED 
			 COMPONENTS data_time system thread serialization)
[version] 选项

用于指定要查找的包的版本(版本格式为major[.minor[.patch[.tweak]]])。

[EXACT] 选项

查找的包的版本需要和指定的版本准确匹配。如果没有使用[version]选项,没有给出需要的包组件列表,就会使用外部调用的相应参数(包括[version]的EXACT选项)。

例如:

find_package(Protobuf 3 EXACT REQUIRED)
include_directories(${Protobuf_INCLUDE_DIRS})

参考链接:https://blog.youkuaiyun.com/challenglistic/article/details/130138476

参考链接:https://zhuanlan.zhihu.com/p/60479441

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值