find_package的两种搜索模式都会按照一定规则从路径下搜索.cmake后缀的文件,两种模式下的.cmake文件作用都是为了给find_package命令的调用方返回有关包的信息(头文件路径、库文件路径、编译连接选项、版本信息等等),对于两种模式的进一步说明可以参看Cmake中find_package命令的搜索模式之模块模式(Module mode)和Cmake中fi...
一、模块模式简介 前面介绍了find_package有两种搜索包的模式(参考find_package介绍),本篇文章介绍其中的一种:模块模式(Module Mode)。在这种模式下,当调用find_package命令查找<PackageName>包的时候,实际上会去查找一个名为Find<PackageName>.cmake的文件,这个文件的主要任务就是确定一个包是否可用,查找的...
1.2 config模式 在这个模式下会查找一个名为-config.cmake(<小写包名>-config.cmake)或者Config.cmake 的文件,如果指定了版本信息也会搜索名为-config-version.cmake 或者 ConfigVersion.cmake的文件。 1.2.1 搜索路径 该模式搜索配置和版本文件的路径比module模式复杂的多: 首先在CMAKE_FIND_PACKAGE_REDIRECTS_...
find_package的两种搜索模式都会按照一定规则从路径下搜索.cmake后缀的文件,两种模式下的.cmake文件作用都是为了给find_package命令的调用方返回有关包的信息(头文件路径、库文件路径、编译连接选项、版本信息等等),对于两种模式的进一步说明可以参看Cmake中find_package命令的搜索模式之模块模式(Module mode)和C...
代码地址:https://github.com/huang123aini/CMake-Note/tree/master/find_package/find_package_custom_by_module 例子目录如下: 在cmake文件下生成FindLibA.cmake 和 FindLibB.cmake文件,定义LibA库和LibB库的头文件路径&库路径。 在根目录的CMakeLists.txt文件里: ...
如果Module模式搜索失败,没有找到对应的Find<LibraryName>.cmake文件,则转入Config模式进行搜索。它主要通过<LibraryName>Config.cmakeor<lower-case-package-name>-config.cmake这两个文件来引入我们需要的库。以我们刚刚安装的glog库为例,在我们安装之后,它在/usr/local/lib/cmake/glog/目录下生成了glog-config.c...
首先,find_package 有两种模式,一是Module模式,一是Config模式。 cmake本身不提供任何搜索库的便捷方法,所有搜索库并给变量赋值的操作必须由cmake代码(自己写的)完成,比如下面将要提到的FindXXX.cmake和XXXConfig.cmake。只不过,库的作者通常会提供这两个文件,以方便使用者调用。
1.1 模块模式(Module mode) 在该模式下,Cmake会搜索一个名为Find<PackageName>.cmake的文件,其中<PackageName>为待搜索包的名称。 搜索路径的顺序依次是: 从变量CMAKE_MODULE_PATH指定的路径中进行查找 从Cmake安装路径中查找。Cmake会在其安装路径下提供很多.cmake文件,例如/XXX/cmake/Modules/目录下...
它有两种不同的搜索方式,因此在介绍这个命令的细节之前,先简单介绍一下 find_package 命令的两种搜索模式: 模块模式 ( Module mode )和 配置模式 ( Config mode )。 在该模式下, Cmake 会搜索一个名为 Find<PackageName>.cmake 的文件,其中 <PackageName> 为待搜索包的...
find_package()的第⼀步,应当判断它是Module模式还是Config模式。Module模式下find_package()的⽤法 find_package(<PackageName> [version] [EXACT] [QUIET] [MODULE]Module模式下,相⽐于Config模式,可选配置参数少⼀些,并且如果按⽤户指定的配置却找不到包,就会⾃动进⼊Config模式(如上图所⽰...