CMP0128

3.22 版本新增。

当此策略设置为 NEW

OLD 行为

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

  • 如果之前被 CMake 覆盖但未在编译器检测期间使用的标准模式标志,由于 CMake 不再默认添加(检测到的默认值是合适的),现在生效了。

    此类代码应转换为以下两种方式之一:

  • 如果未设置 <LANG>_STANDARD 时禁用了扩展,CMake 之前实际上并不会禁用扩展。

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

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

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

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

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

有关控制警告的信息,请参阅 CMAKE_POLICY_WARNING_CMP0128 变量的文档。

注意

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