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(CURLREQUIRED)include_directories(${CURL_INCLUDE_DIR})target_link_libraries(curltest ${CURL_LIBRARY}) 那么cmake是如何查找的呢? find_package()命令首先会在模块路径中寻找Find.cmake,这是查找库的一个典型方式。具体查找路径依次为CMake:变量${CMAKE_MODULE_PATH}中的所有目录。如果没有,...
find_package 命令高级工作模式(Full Signature)。 只有在 find_package() 中指定 CONFIG、 NO_MODULE 等关键字,或者 Module 模式查找失败后才会进入到 Config 模式。 因此,find_package工作模式流程图为: 三、参数解释 3.1 Module 模式 find_package(<package>[version] [EXACT] [QUIET] [MODULE] [REQUIRED] [...
所以如果想要指定优先使用静态库,前面的cmake脚本可以稍改一下,如下,就是在调用find_package之前设置JPEG_NAMES为想要的静态库名: 代码语言:javascript 复制 # 查找libjpeg库,优先使用静态库if(MSVC)set(JPEG_NAMESjpeg-static)elseif(CMAKE_COMPILER_IS_GNUCXX)set(JPEG_NAMESlibjpeg.a)endif()find_package(JPEGRE...
find_package(Boost 1.70.0 REQUIRED) if(Boost_FOUND) message("Found Boost ${Boost_VERSION}") else() message(FATAL_ERROR "Could not find Boost") endif() 这将在系统中搜索名为libboost_*的库文件,并检查是否存在版本号为1.70.0的Boost库文件。如果找到了,则会输出“Found Boost x.x.xx”消息,否则...
FIND_PACKAGE(<PackageName>)如何查找头文件和库文件路径? 有两种模式:Module模式和Config模式。 1. Module模式 该模式通过寻找Find<PackageName>.cmake文件,由该文件找到对应的库以及路径。 Find<PackageName>.cmake文件负责查找包、检查版本、提供任何所需的消息。
find_package()原理解读 根据cmake官方文档可以知道,find_package()有Module模式(基本用法,basic signature)和Config模式(full signature,完全用法),其中Module模式是基础,Config模式则更复杂高级些。 区分Module模式和Config模式 Module模式也就是基础用法(Basic Signature,这里Signature表示“用法”,而不是“签名”),Confi...
自定义Findxxx.cmake文件进一步解决链接问题,通过find_path和find_library定位头文件与库,file glob方式搜索特定文件。find_package时,模块模式下,先在module路径查找Find.cmake,未能找到则在系统标准路径搜索。使用list APPEND不修改原有变量。config模式下,cmake优先检查自定义目录,若找不到指定路径,...
find_package# Copy Highlighter-hljs # 使用config模式, 需要指定config所在路径set(CMAKE_PREFIX_PATH"${CMAKE_PREFIX_PATH};${CMAKE_CURRENT_SOURCE_DIR}/ext/toolkits/cmake")# 指定第三方库的路径, third_lib_dir 是 libuv-config.cmake中的变量, 用于表示第三方库的所在路径# third_lib_dir 的赋值需...
CMake和Linux编程:find_package的使用 1.第一个CMake例子 在t1目录建立main.c和CMakeLists.txt(注意文件名大小写): main.c文件内容: 1 2 3 4 5 6 7 //main.c #include <stdio.h> intmain() { printf(“Hello World from t1 Main!n”);...