find_package将先到module路径下查找Find<name>.cmake。首先它搜索${CMAKE_MODULE_PATH}中的所有路径,然后搜索/usr/share/cmake-3.5/Modules。比如find_package(Boost)搜索的文件是/usr/share/cmake-3.5/Modules/FindBoost.cmake。 采用list APPEND 不会改变原来的变量,只是在list中新增。 # set(CMAKE_MODULE_...
find_package将先到 module 路径下查找Find<name>.cmake。首先它搜索${CMAKE_MODULE_PATH}中的所有路径,然后搜索/usr/share/cmake-3.5/Modules.比如find_package(Boost)搜索的文件是/usr/share/cmake-3.5/Modules/FindBoost.cmake 如果在 CMakeLists.txt 中没有下面的指令: 1 set(CMAKE_MODULE_PATH"Findxxx...
find_package(Boost COMPONENTS regex system REQUIRED) if(Boost_FOUND) include_directories(${Boost_INCLUDE_DIRS}) MESSAGE( STATUS "Boost_INCLUDE_DIRS = ${Boost_INCLUDE_DIRS}.") MESSAGE( STATUS "Boost_LIBRARIES = ${Boost_LIBRARIES}.") MESSAGE( STATUS "Boost_LIB_VERSION = ${Boost_LIB_VERSION}...
这是因为cmake的find_package需要制定具体的library,${Boost_LIBRARIES}才会有值,要不然就会是空,find_package的正确写法是: find_package(Boost1.54REQUIRED COMPONENTS system thread) 这样可以看到打印的结果,所需要的库都找到了,这样target_link_libraries(boostCmake ${Boost_LIBRARIES}才会真正的链接到具体的so上,...
通过调用find_package可以找到头文件和所需要的库文件或者是一个CMake打包配置文件, find_package(Boost [version] [EXACT]#可选项,最小版本或者确切所需版本 [REQUIRED]#可选项,如果找不到所需库,报错 [COMPONENTS<libs>...]#所需的库名称,比如说."date_time"代表"libboost_date_time" ...
二、find_package命令参数解析 find_package命令具有多个可选参数,下面将详细介绍其中一些常用参数的含义和用法: NAME:指定要查找的外部库或框架的名称。可以同时指定多个名称,以逗号分隔。 find_package(Boost REQUIRED COMPONENTS system filesystem) 上述代码将查找并加载Boost库中的system和filesystem组件。 REQUIRED:可...
上面列出的opencv和protobuf是重灾区,还有没有列出来的比如boost版本问题等。解决起来也不难: 明确find_package()的N大查找顺序 知道如何让find_package()找到非CMake构建安装的依赖包 find_package()原理解读 根据cmake官方文档可以知道,find_package()有Module模式(基本用法,basic signature)和Config模式(full signat...
OPTIONAL_COMPONENTS components…:可选的依赖组件,即使找不到也不会影响cmake继续执行; NO_POLICY_SCOPE:cmake policy,参见:cmake_policy 注:上述参数中,除了PackageName必需,其他都是可选参数。 MODULE模式的查找路径 在MODULE模式下,cmake通过查找名为Find<PackageName>.cmake的文件来查找包。
find_package 通过调用find_package可以找到头文件和所需要的库文件或者是一个CMake打包配置文件, find_package(Boost[version][EXACT]# 可选项,最小版本或者确切所需版本[REQUIRED]# 可选项,如果找不到所需库,报错[COMPONENTS<libs>...]# 所需的库名称,比如说."date_time"代表"libboost_date_time") ...
(boost_components_option --with-system --with-date_time --with-regex)# Find compiled Boostfind_package(Boost COMPONENTS${boost_components}) <-- STMT1# If couldn't find it, compile Boost before process.if(NOT${Boost_FOUND})if(WIN32)set(bootstrap_name bootstrap.bat)set(bootstrap_c...