CMP0128

添加到版本 3.22 中。

当此策略设置为 NEW

OLD 行为

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

  • 如果标准模式标志以前由 CMake 覆盖且在编译器检测期间未使用的标志现在生效,因为 CMake 不再添加此标志作为默认检测标志。

    应将此类代码转换成

  • 如果在未设置 <LANG>_STANDARD 的情况下禁用了扩展,那么 CMake 以前不会实际禁用扩展。

    这样的代码应该更新为在需要的情况下不禁用扩展。

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

    这样的代码应该更新为设置正确的扩展模式。

如果在编译器检测过程中使用了会影响标准模式的编译器标志(例如,在 a toolchain file 中使用 CMAKE_<LANG>_FLAGS_INIT),那么它们会影响检测到的默认 standardextensions

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

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

注意

策略的 OLD 行为 根据定义 已弃用,并且可能会在 CMake 的未来版本中被移除。