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 内置默认值来编辑 CMAKE_CXX_FLAGS
变量的字符串,以便能够替换它。
默认情况下,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 版本中删除。