CMP0117¶
在 3.20 版本中添加。
MSVC RTTI 标志 /GR
默认不添加到 CMAKE_CXX_FLAGS
。
在使用 CMake 3.19 及更早版本中的类 MSVC 编译器时,RTTI 标志 /GR
默认会被添加到 CMAKE_CXX_FLAGS
。此行为源于对 Visual Studio 2003 及更早版本 MSVC 的支持,当时 RTTI 默认不启用。它已不再必要。此外,这对于希望以编程方式更改为 /GR-
的项目来说是个问题。具体来说,它需要对 CMAKE_CXX_FLAGS
变量进行字符串编辑,并了解 CMake 内置默认值,以便进行替换。
CMake 3.20 及更高版本默认情况下倾向于不将 /GR
添加到 CMAKE_CXX_FLAGS
的值中。
此策略提供了与未更新为期望 /GR
标志缺失的项目兼容性。策略设置从第一次初始化 project()
或 enable_language()
命令开始生效。
注意
一旦策略在项目顶层对给定语言生效,该选择就必须在整个树中对该语言使用。在具有嵌套项目的子目录中,请确保一起转换所有内容。
此策略的 OLD
行为是将 MSVC /GR
标志放入默认的 CMAKE_CXX_FLAGS
缓存条目中。此策略的 NEW
行为是默认情况下不将 MSVC /GR
标志放入缓存条目中。
此策略在 CMake 版本 3.20 中引入。它可以通过 cmake_policy()
或 cmake_minimum_required()
设置。如果未设置,CMake不会发出警告,而是使用 OLD
行为。
注意
根据定义,策略的 OLD
行为是不推荐使用的
,并且可能会在未来的 CMake 版本中移除。