CMP0183¶
4.0 版本新增。
add_feature_info() 支持完整的 条件语法。
“<condition>” 参数接受一个 分号分隔的条件列表。CMake 3.31 及更低版本将每个“condition”评估为“if(${condition})”,这无法正确处理带有嵌套括号的条件。CMake 4.0 及更高版本则倾向于将每个“condition”评估为“if(<condition>)”,其中“<condition>”会像字面写在 if() 调用中一样被重新解析。这允许像
"A AND (B OR C)"
这样的表达式,但要求像
"FOO MATCHES (UPPER|lower)"
这样的表达式需要重写为
"FOO MATCHES \"(UPPER|lower)\""
策略“CMP0183”为尚未更新以适应新行为的项目提供了兼容性。
此策略在 CMake 版本 4.0 中引入。它可以通过 cmake_policy() 或 cmake_minimum_required() 设置。如果未设置,CMake 会发出警告并使用“OLD”行为。
注意
策略的 OLD 行为 根据定义已被弃用,并可能在未来的 CMake 版本中被移除。