CMP0127¶
3.22 版本新增。
cmake_dependent_option()
支持完整的 Condition Syntax。
The <condition>
参数接受一个 分号分隔的列表。CMake 3.21 及更早版本将每个 condition
评估为 if(${condition})
,这不能正确处理带嵌套圆括号的条件。CMake 3.22 及更高版本则倾向于将每个 condition
评估为 if(<condition>)
,其中 <condition>
会被重新解析,就好像它字面上写在对 if()
的调用中一样。这允许类似以下的表达式
"A AND (B OR C)"
但需要类似以下的表达式
"FOO MATCHES (UPPER|lower)"
被重写为
"FOO MATCHES \"(UPPER|lower)\""
策略 CMP0127
为尚未更新以适应新行为的项目提供了兼容性。
此策略在 CMake 版本 3.22 中引入。可以通过 cmake_policy()
或 cmake_minimum_required()
设置。如果未设置,CMake 会发出警告并使用 OLD
行为。
注意
策略的 OLD
行为 按定义是过时的
,并且可能在未来的 CMake 版本中被移除。