CMP0128

在版本 3.22 中添加。

当此策略设置为 NEW

OLD 行为

在以下情况下,代码可能需要为 NEW 行为进行更新

  • 如果标准模式标志先前被 CMake 覆盖,并且在编译器检测期间未使用,则由于 CMake 不再添加默认检测到的标志,现在会生效。

    此类代码应转换为以下任一种

  • 如果禁用了扩展,但没有设置 <LANG>_STANDARD,则 CMake 之前实际上不会禁用扩展。

    此类代码应更新为在需要扩展时不要禁用扩展。

  • 如果在 <LANG>_STANDARD 由编译器的默认值满足时启用/禁用扩展,则 CMake 之前实际上不会启用/禁用扩展。

    此类代码应更新为设置正确的扩展模式。

如果在编译器检测期间使用影响标准模式的编译器标志(例如在 工具链 文件 中使用 CMAKE_<LANG>_FLAGS_INIT),那么它们将影响检测到的默认 standardextensions

此策略在 CMake 版本 3.22 中引入。它可以通过 cmake_policy()cmake_minimum_required() 设置。如果未设置,CMake 默认情况下发出警告,并使用 OLD 行为。

请参阅 CMAKE_POLICY_WARNING_CMP0128 变量的文档以控制警告。

注意

策略的 OLD 行为按照 定义已弃用,并可能在 CMake 的未来版本中移除。