这些形如 包名+ Config.cmake 的文件,我称之为包配置文件。 Qt5Config.cmake 是在安装Qt5 时,随 libQt5Core.so 等实际的库文件,一起装到系统中去的。 以Arch Linux 系统为例: 包配置文件位于/usr/lib/cmake/Qt5/Qt5Config.cmake。 实际的动态库文件位于/usr/lib/libQt5Core.so。 以Ubuntu 22.04 ...
# 将项目目录下的cmake文件夹加入到CMAKE_MODULE_PATH中,让find_pakcage能够找到我们自定义的函数库set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}")add_executable(addtest addtest.cc)find_package(ADD)if(ADD_FOUND)target_include_directories(addtest PRIVATE ${ADD_INCLUDE_D...
在该模式下,Cmake会搜索一个名为Find<PackageName>.cmake的文件,其中<PackageName>为待搜索包的名称。 搜索路径的顺序依次是: 从变量CMAKE_MODULE_PATH指定的路径中进行查找 从Cmake安装路径中查找。Cmake会在其安装路径下提供很多.cmake文件,例如/XXX/cmake/Modules/目录下(不同的系统安装目录可能不一...
正确设置 find_package 的搜索路径对于确保 CMake 能够正确找到和配置第三方库至关重要。通过灵活使用 CMAKE_MODULE_PATH、CMAKE_PREFIX_PATH 和<PackageName>_DIR 等变量,以及 find_package 命令的 PATHS 选项,你可以有效地控制搜索路径,从而避免库查找失败的问题。这不仅有助于项目的顺利构建,还能提高项目...
1.1 module模式 在这个模式下会查找一个名为find.cmake的文件,首先去CMAKE_MODULE_PATH指定的路径下去查找,然后去cmake安装提供的查找模块中查找(安装cmake时生成的一些cmake文件)。找到之后会检查版本,生成一些需要的信息。 1.2 config模式 在这个模式下会查找一个名为-config.cmake(<小写包名>-config.cmake)或...
find_package(MyLib NO_MODULE) 上述代码表示禁用find_package命令的模块模式,只使用CMake内置的文件搜索机制来查找MyLib库。 NO_DEFAULT_PATH:可选参数,用于禁用find_package命令的默认路径搜索。默认情况下,find_package命令会在一些预定义的路径中搜索库或框架。如果指定了该参数,find_package命令将只使用CMAKE_PREF...
CMAKE_MODULE_PATH是一个逗号分割的列表,用来指定CMake 模块搜索路径,有两个命令可能会使用到它,分别是include()和find_package。默认情况,这个列表为空,通常是在项目中设置的。 1.2 配置模式(Config mode) 在这个模式下,CMake尝试寻找名为带有config的后缀为cmake文件(<lowercasePackageName>-config.cmake<Package...
Module 模式下是要查找到名为 Find<PackageName>.cmake 的配置文件。 Module 模式只有两个查找路径:CMAKE_MODULE_PATH 和 CMake 安装路径下的 Modules 目录,搜包路径依次为: CMAKE_MODULE_PATH CMAKE_ROOT 1. 2. 先在CMAKE_MODULE_PATH 变量对应的路径中查找。如果路径为空,或者路径中查找失败,则在 CMake...
1.1 模块模式(Module mode) 在该模式下,Cmake会搜索一个名为Find<PackageName>.cmake的文件,其中<PackageName>为待搜索包的名称。 搜索路径的顺序依次是: 从变量CMAKE_MODULE_PATH指定的路径中进行查找 从Cmake安装路径中查找。Cmake会在其安装路径下提供很多.cmake文件,例如/XXX/cmake/Modules...
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 中没有下面的指令: ...