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 的未来版本中移除。