请注意,如果系统目录(一般是 /usr/local/lib/cmake/ )里有一个Find<package>.cmake文件,但你却不想使用默认的,想自己定义一个Find<package>.cmake,即想让它绕过默认库,则你可以指定 CMAKE_MODULE_PATH ,它的优先级比默认路径要高。 对Config模式,<package>Config.cmake一般放在外部目录下,也就是说这个文件...
根据cmake官方文档可以知道,find_package()有Module模式(基本用法,basic signature)和Config模式(full signature,完全用法),其中Module模式是基础,Config模式则更复杂高级些。 区分Module模式和Config模式 Module模式也就是基础用法(Basic Signature,这里Signature表示“用法”,而不是“签名”),Config模式也就是高级用法(Ful...
首先,find_package 有两种模式,一是Module模式,一是Config模式。 cmake本身不提供任何搜索库的便捷方法,所有搜索库并给变量赋值的操作必须由cmake代码(自己写的)完成,比如下面将要提到的FindXXX.cmake和XXXConfig.cmake。只不过,库的作者通常会提供这两个文件,以方便使用者调用。 两种搜索模式:(其中 XXX 是模块的...
1.2 config模式 在这个模式下会查找一个名为-config.cmake(<小写包名>-config.cmake)或者Config.cmake 的文件,如果指定了版本信息也会搜索名为-config-version.cmake 或者 ConfigVersion.cmake的文件。 1.2.1 搜索路径 该模式搜索配置和版本文件的路径比module模式复杂的多: 首先在CMAKE_FIND_PACKAGE_REDIRECTS_...
根据cmake官方文档可以知道,find_package()有Module模式(基本用法,basic signature)和Config模式(full signature,完全用法),其中Module模式是基础,Config模式则更复杂高级些。 区分Module模式和Config模式 Module模式也就是基础用法(Basic Signature,这里Signature表示“用法”,而不是“签名”),Config模式也就是高级用法(Ful...
find_package指令有两种查找包的模式:一种是模块(Module)模式,一种是配置(Config)模式。默认情况下,首先使用模块(Module)模式,如果没有找到对应的模块(Module),就会使用配置(Config)模式。如果使用了MODULE选项,使用模块模式失败后,不会继续使用配置(Config)模式。
Module模式与Config模式 通过上文我们了解了通过Cmake引入依赖库的基本用法。知其然也要知其所以然,find_package对我们来说是一个黑盒子,那么它是具体通过什么方式来查找到我们依赖的库文件的路径的呢。到这里我们就不得不聊到find_package的两种模式,一种是Module模式,也就是我们引入curl库的方式。另一种叫做Confi...
与find_libaray直接在指定搜索目录下搜索库不同,find_package命令可以获取更多的信息,那么它的搜索方式也是与find_libaray不一样,它有两种不同的搜索方式,因此在介绍这个命令的细节之前,先简单介绍一下find_package命令的两种搜索模式:模块模式(Module mode)和配置模式(Config mode)。
利用cmake的find_package()函数进行CONFIG模式调用时,其会结合安装生成的cmake文件,进行模块的查找。该操作的详细过程,可以参考文章:无我:CMake install 参考地址: CMake part 3: create a config file to be found by find_package()总之,在自定义模块开发中,通过灵活应用CMake的MODULE和C...
在module模式下,CMake查找名为find.cmake的文件。首先在CMAKE_MODULE_PATH指定的路径中查找,随后在cmake安装时生成的查找模块中搜索。找到后会检查版本,并生成相关信息。config模式下,CMake查找名为-config.cmake(-config.cmake)或Config.cmake的文件,如果提供了版本信息,则还会搜索名为-config-...