问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

find_package深度解析及实例应用

发布网友 发布时间:2024-09-25 23:58

我来回答

1个回答

热心网友 时间:2024-11-14 08:01

在查找模式中,CMake使用两种主要模式:mole和config。

在mole模式下,CMake查找名为find.cmake的文件。首先在CMAKE_MODULE_PATH指定的路径中查找,随后在cmake安装时生成的查找模块中搜索。找到后会检查版本,并生成相关信息。

config模式下,CMake查找名为-config.cmake(-config.cmake)或Config.cmake的文件,如果提供了版本信息,则还会搜索名为-config-version.cmake或ConfigVersion.cmake的版本文件。config模式的搜索路径更为复杂,包括CMAKE_FIND_PACKAGE_REDIRECTS_DIR指定的路径,以及一系列优先级逐步递减的目录,如安装目录、特定cmake缓存变量指定的路径、cmake环境变量、系统平台文件中定义的cmake变量、用户自定义路径等。

在config模式中,还会有版本配置文件参与,用于校验与指定版本兼容的包。这些文件能被CMakePackageConfigHelpers模块辅助创建。

CMake会解析version参数,并根据范围或单一版本号来查找兼容的包。查找后,会生成一系列反映包版本信息的变量,如全版本、主版本、次版本等。若版本校验通过,会设置相应的_VERSION变量,供后续使用。

find_package命令支持多种格式和选项,如version(用于指定兼容版本),EXACT(要求精确匹配),MODULE(仅使用mole模式),QUIET(禁用信息消息),REQUIRED(找不到包时停止处理),COMPONENTS(指定组件列表),OPTIONAL_COMPONENTS(允许某些组件不存在),以及NAMES(使用特定名称查找包)等。

find_package的实例应用可以用于引用外部自定义库。例如,创建一个包含库文件和头文件的目录结构,然后编写FindAdd.cmake文件以支持find_package函数。在CMakeLists.txt中调用find_package函数即可完成查找和引用。

CMake还支持查找自带的内部依赖库,只需直接调用find_package函数即可。若需引用非内部库,如grpc,需先使用cmake方式编译安装,然后通过find_package进行查找。

此外,CMake提供了config模式的查找功能,允许开发者自定义查找策略和搜索路径,增加查找的灵活性和控制。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
美国在多少个国家有驻军? 美国在哪些国家有驻军? 美国在哪些国家派有驻军? 美国在其本土以外的驻军有多少 美国都在哪些国家有驻军 空调制热的正确调法 守捉郎与侠客行 《长安十二时辰》乱弹之五 小孩子给母亲节的祝福 孩子送给妈妈的母亲节祝福语句子2024 中国篮球a级教练都是谁 CMake教程系列-03-依赖管理 哪些从物权 什么是从物权 溢交费是什么意思? 留存递延收益是什么 留存收益等于什么 什么是预留税费 2022年11月23日萍乡市交警支队上班了吗警队在哪里 2022中秋节派出所上班吗 2022派出所中秋节放假吗 患者不配合治疗受到损害的,医疗机构还需要担责吗 人的心理如何迅速做出反应的!如遇事有时第一反应是;明天做,有时等下... 出售商标侵权物品有责任吗 为什么用手机登QQ空间,转载的日志好友动态里看不到,只能在我的主页里... QQ空间里面转发说说,先是说转发成功。我刷新下就又没有了。别人也看不... 左小蕾的基本信息 付新华的课题 商家侵犯消费者权益,消费者该怎么办? 有哪些推荐书单的网站 哪个网站可以读书 有哪些好的读书网站? CMake库搜索函数居然不搜索LD_LIBRARY_PATH CMake是如何找到OpenSSL的? CMakeLists.txt的基本指令 地瓜肉片的做法 全身酸痛无力,经常疲劳不想工作,失眠心慌记忆力减退是什么病? 家养多肉紫外线不足怎么办 有哪些方法能提升杂粮煎饼的口感? 有哪些技巧能提升杂粮煎饼的口感? 怎样做杂粮煎饼会更入味? 点火系统工作原理是怎样的 成都天府通健康码“黄码”人员核酸检测最新通知 哪个牌子的猫咪化毛膏比较好? 猫咪化毛膏哪个牌子效果好 化毛膏哪个牌子比较好 多久给猫吃一次 什么化毛膏猫咪用比较好 世界重点保护的珍稀濒危树种世界重点保护的珍稀濒危树种有哪些_百度知 ... 围绕无废城市描述美好的重庆怎么写? 大众高尔夫1.4自动舒适型和1.4t自动豪华型价格相差多少 高尔夫1.4T自动和豪华买哪个应该? 我想给妈妈买一套抗衰老的护肤品,国外那些大牌太贵了,有人给我推荐那个...