CMP0183¶
在版本 4.0 中添加。
add_feature_info()
支持完整的 条件语法。
<enabled>
参数接受以 分号分隔的列表 的条件。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 版本中移除。