CMake find_package命令NAMES选项的包搜索逻辑探究
CMake find_package NAMES 选项的处理逻辑解析
1. NAMES选项的核心作用
find_package的NAMES参数用来指定一组候选的包名称,CMake会严格按照你给出的列表顺序逐个尝试查找这些包。
2. 搜索停止与结果判定
CMake不会在找到第一个可用包时就停止搜索,它会把NAMES列表里的所有候选名称都遍历一遍,最终保留最后一个成功找到的包的配置信息。
举个例子,如果你写了:
find_package(MyQt NAMES Qt5 Qt6)
如果系统里同时装了Qt5和Qt6,CMake会先找到Qt5,然后继续搜索Qt6,最终项目里会使用Qt6的相关配置。
3. 文档与实际行为的差异
Qt文档里提到的“找到第一个可用库即停止”,大概率是Qt自身提供的查找模块的特殊逻辑,但这不是CMake原生find_package的通用规则。实际在Linux环境测试时,确实会遍历完所有候选名称,最终采用最后一个能找到的有效包。
内容的提问来源于stack exchange,提问作者placeholder
相关产品推荐
相关产品推荐

