[[COMPONENTS] [component1] [component2] ...]表示查找库文件的指定组件。 例如,以下示例将尝试查找名为Boost的库文件,并指定其版本号为1.70.0: find_package(Boost 1.70.0 REQUIRED) if(Boost_FOUND) message("Found Boost ${Boost_VERSION}") else() message(FATAL_ERROR "Could not find Boost") endif...
find_package(catkin REQUIRED COMPONENTS nodelet)。例如,使用 Boost 时加载线程组件: 1 find_package(Boost REQUIRED COMPONENTS thread) 使用Find_Package寻找模块时,每一个模块都会产生如下变量: 1 2 3 _FOUND _INCLUDE_DIR _LIBRARYor_LIBRARIES 如果_FOUND 为真,需要把_INCLUDE_DIR 加入到INCLUDE_DIRECTORIES中,...
cmake --help-module FindBoost 递归搜索文件 file(GLOB_RECURSE cpps *.cpp) message(STATUS "cpps: ${cpps}") PACKAGE_DEPENDENCIES set(PACKAGE_DEPENDENCIES cartographer_ros_msgs eigen_conversions geometry_msgs urdf visualization_msgs ) find_package(catkin REQUIRED COMPONENTS ${PACKAGE_DEPENDENCIES}) 使...
find_package(OpenCV REQUIRED) find_package(Boost COMPONENTS system REQUIRED) ``` 在这种情况下,首先会查找OpenCV库,如果成功找到则继续查找Boost库中的system组件。如果没有找到任何一个包或模块,则会报错并退出CMake进程。 4. 配置失败的处理方式 如果find_package命令返回失败,可以根据需要采取不同的处理方式。
上面列出的opencv和protobuf是重灾区,还有没有列出来的比如boost版本问题等。解决起来也不难: 明确find_package()的N大查找顺序 知道如何让find_package()找到非CMake构建安装的依赖包 find_package()原理解读 根据cmake官方文档可以知道,find_package()有Module模式(基本用法,basic signature)和Config模式(full signat...
这是因为cmake的find_package需要制定具体的library,${Boost_LIBRARIES}才会有值,要不然就会是空,find_package的正确写法是: find_package(Boost1.54REQUIRED COMPONENTS system thread) 这样可以看到打印的结果,所需要的库都找到了,这样target_link_libraries(boostCmake ${Boost_LIBRARIES}才会真正的链接到具体的so上,...
二、find_package命令参数解析 find_package命令具有多个可选参数,下面将详细介绍其中一些常用参数的含义和用法: NAME:指定要查找的外部库或框架的名称。可以同时指定多个名称,以逗号分隔。 find_package(Boost REQUIRED COMPONENTS system filesystem) 上述代码将查找并加载Boost库中的system和filesystem组件。 REQUIRED:可...
如警告消息中所述,header-onlyBoost库不应在COMPONENTS中为find_package(Boost)指定。如果没有COMPONENTS...
find_package(Boost 1.71 REQUIRED) 在这个例子中,我们指定了要查找的Boost库的版本号1.71。CMake将仅仅查找与这个版本完全匹配的Boost库。 示例3:查找带有选项组件的PCL库 find_package(PCL REQUIRED COMPONENTS common io) 在这个例子中,我们使用“find_package”指令来查找PCL库,并指定了我们需要的两个组件:"common...
OPTIONAL_COMPONENTS components…:可选的依赖组件,即使找不到也不会影响cmake继续执行; NO_POLICY_SCOPE:cmake policy,参见:cmake_policy 注:上述参数中,除了PackageName必需,其他都是可选参数。 MODULE模式的查找路径 在MODULE模式下,cmake通过查找名为Find<PackageName>.cmake的文件来查找包。