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_FLAGSproject()enable_language() 命令生效。

注意

此策略在项目顶层对指定语言生效后,该选择必须在整个树中用于该语言。在子目录中有嵌套项目的项目中,请务必同时转换一切内容。

此策略的 OLD 行为是将 MSVC /GR 标志放在默认 CMAKE_CXX_FLAGS 缓存条目中。此策略的 NEW 行为是将 MSVC /GR 标志放在默认缓存条目中。

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

注意

策略的 OLD 行为 默认情况下已弃用,并可能在未来的 CMake 版本中删除。