CMP0128

在 3.22 版本加入.

当此策略设置为“NEW”时:

OLD 行为:

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

  • 如果以前被 CMake 覆盖并且在编译器检测期间未使用的标准模式标志现在生效,因为 CMake 不再添加一个,因为检测到的默认值是合适的。

    此类代码应转换为:

  • 如果在没有设置 <LANG>_STANDARD 的情况下禁用扩展,CMake 以前实际上不会禁用扩展。

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

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

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

如果在编译器检测期间使用了影响标准模式的编译器标志(例如在 a toolchain file using CMAKE_<LANG>_FLAGS_INIT)那么它们将影响检测到的默认 标准扩展

与许多政策不同,CMake 版本 |release|当政策未设置时 发出警告,只是使用“旧”行为。使用 cmake_policy() 命令将其显式设置为 OLDNEW。请参阅 CMAKE_POLICY_WARNING_CMP0128 变量的文档以控制警告。

备注

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