CMP0092

在 3.15 版本加入.

默认情况下,MSVC 警告标志不在 CMAKE_<LANG>_FLAGS 中。

在 CMake 3.14 及更低版本中使用类似 MSVC 的编译器时,默认情况下会将像 /W3 这样的警告标志添加到 CMAKE_<LANG>_FLAGS 中。这对于想要以编程方式选择不同警告级别的项目来说是有问题的。特别是,它需要在了解 CMake 内置默认值的情况下对 CMAKE_<LANG>_FLAGS 变量进行字符串编辑,以便替换它们。

默认情况下,CMake 3.15 及更高版本倾向于从 CMAKE_<LANG>_FLAGS 的值中省略警告标志。

此政策提供与尚未更新的项目的兼容性,以预期缺少警告标志。策略设置从第一个 project()enable_language() 命令开始生效,该命令为给定语言 <LANG> 初始化 CMAKE_<LANG>_FLAGS

备注

一旦该策略在给定语言的项目顶部生效,该选择必须在该语言的整个树中使用。在子目录中具有嵌套项目的项目中,请确保将所有内容一起转换。

此策略的“旧”行为是将 MSVC 警告标志放置在默认的 CMAKE_<LANG>_FLAGS 缓存条目中。此策略的“新”行为是*不*在默认缓存条目中放置 MSVC 警告标志。

此策略是在 CMake 版本 3.15 中引入的。使用 cmake_policy() 命令将其显式设置为 OLDNEW。与许多政策不同,CMake 版本 |release|当此策略未设置且仅使用“旧”行为时*不*发出警告。

备注

策略的“旧”行为是 :manual:根据定义 <cmake-policies(7)> 已弃用,并且可能会在未来版本的 CMake 中删除。