CMP0127

在 3.22 版本加入.

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

<depends> 参数接受 分号分隔的条件列表。 CMake 3.21 及更低版本将每个 condition 评估为 if(${condition}),这不能正确处理嵌套 paren 组的条件。 CMake 3.22 及更高版本更喜欢将每个 condition 评估为 if(<condition>),其中 <condition> 被重新解析,就好像字面上写在对 :command: 的调用中一样如果`。这允许像 :: 这样的表达式

"A AND (B OR C)"

但需要像 :: 这样的表达式

"FOO MATCHES (UPPER|lower)"

重写为::

"FOO MATCHES \"(UPPER|lower)\""

策略“CMP0127”为尚未更新以期待新行为的项目提供兼容性。

此策略是在 CMake 版本 3.22 中引入的。 CMake 版本 |发布|当未设置策略并使用“旧”行为时发出警告。使用 cmake_policy() 命令将其显式设置为 OLDNEW

备注

策略的“旧”行为是 :manual:根据定义 <cmake-policies(7)> 已弃用,并且可能会在未来版本的 CMake 中删除。