概述 本文将介绍 find_package 的 config添加依赖库 module的模式先前已介绍过了, 详见 这里 本文演示环境: win11 + cmake 3.23 一个例子 这里以 libuv 库为例, config模式的文件名需要满足 XXX-config.cmake 或者 XXXCon
Module模式:find_package命令基础工作模式(Basic Signature),也是默认工作模式。 Config模式:find_package命令高级工作模式(Full Signature)。 只有在find_package()中指定CONFIG、NO_MODULE等关键字,或者Module模式查找失败后才会进入到Config模式。 【Cmake之深入理解find_package()的用法中对Module模式和Config模式的区别...
cmake 的find_package()调用使用CONFIG模式是结合install生成的cmake文件:cmake install具体可以参考: 无我:CMake install 参考地址:CMake part 3: create a config file to be found by find_package()
1.2 config模式 在这个模式下会查找一个名为-config.cmake(<小写包名>-config.cmake)或者Config.cmake 的文件,如果指定了版本信息也会搜索名为-config-version.cmake 或者 ConfigVersion.cmake的文件。 1.2.1 搜索路径 该模式搜索配置和版本文件的路径比module模式复杂的多: 首先在CMAKE_FIND_PACKAGE_REDIRECTS_...
2.1 配置文件mymathConfig.cmake mymathConfig.cmake文件有两种方式可以生成: 在CMake中include(CMakePackageConfigHelpers),用CMakePackageConfigHelpers提供的configure_package_config_file()来生成。 直接通过set设置对应的变量,本文采用这种方式提供,如下: ...
利用cmake的find_package()函数进行CONFIG模式调用时,其会结合安装生成的cmake文件,进行模块的查找。该操作的详细过程,可以参考文章:无我:CMake install 参考地址: CMake part 3: create a config file to be found by find_package()总之,在自定义模块开发中,通过灵活应用CMake的MODULE和C...
根据cmake官方文档可以知道,find_package()有Module模式(基本用法,basic signature)和Config模式(full signature,完全用法),其中Module模式是基础,Config模式则更复杂高级些。 区分Module模式和Config模式 Module模式也就是基础用法(Basic Signature,这里Signature表示“用法”,而不是“签名”),Config模式也就是高级用法(Ful...
find_package()中指定CONFIG关键字 find_package()中指定NO_MODULE关键字 find_package()中使用了不在"basic signature"(也就是Module模式下所有支持的配置)关键字 find_package()中指定NO_MODULE`关键字 find_package()中使用了不在"basic signature"(也就是Module模式下所有支持的配置)关键字 ...
find_package 命令高级工作模式(Full Signature)。 只有在 find_package() 中指定 CONFIG、 NO_MODULE 等关键字,或者 Module 模式查找失败后才会进入到 Config 模式。 因此,find_package工作模式流程图为: 三、参数解释 3.1 Module 模式 find_package(<package>[version] [EXACT] [QUIET] [MODULE] ...
自定义Findxxx.cmake文件进一步解决链接问题,通过find_path和find_library定位头文件与库,file glob方式搜索特定文件。find_package时,模块模式下,先在module路径查找Find.cmake,未能找到则在系统标准路径搜索。使用list APPEND不修改原有变量。config模式下,cmake优先检查自定义目录,若找不到指定路径,...