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 及更高版本倾向于默认情况下从 CMAKE_CXX_FLAGS
的值中省略 /GR
。
此策略提供了与尚未更新以预期缺少 /GR
标志的项目的兼容性。策略设置在初始化 CMAKE_CXX_FLAGS
的第一个 project()
或 enable_language()
命令生效。
注意
一旦策略在项目顶部对给定语言生效,则必须在该语言的整个树中使用该选择。在子目录中具有嵌套项目的项目中,请务必将所有内容一起转换。
此策略的 OLD
行为是将 MSVC /GR
标志放在默认的 CMAKE_CXX_FLAGS
缓存条目中。此策略的 NEW
行为是不将 MSVC /GR
标志放在默认缓存条目中。
此策略在 CMake 3.20 版本中引入。它可以通过 cmake_policy()
或 cmake_minimum_required()
设置。如果未设置,CMake 不会发出警告,并使用 OLD
行为。
注意
策略的 OLD
行为根据 定义已弃用
,并可能在 CMake 的未来版本中删除。