CMP0127

在版本 3.22 中添加。

cmake_dependent_option() 支持完整的 条件语法

<depends> 参数接受 分号分隔的条件列表。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 版本中删除。