CMP0197

在 4.1 版本中新增。

MSVC 链接器 -machine: 标志未在 CMAKE_*_LINKER_FLAGS 中。

在 CMake 4.0 及更早版本中使用类似 MSVC 的编译器时,链接器的 -machine: 标志通过与语言无关的链接器标志变量添加:

当多种语言的工具链对于是否以及如何通过编译器驱动程序将该标志传递给链接器存在分歧时,这会成为问题。此外,在公开可见的变量中包含该标志允许项目或用户更改它,即使它是必需的。

CMake 4.1 及更高版本倾向于将 -machine: 标志排除在 CMAKE_*_LINKER_FLAGS 变量之外,而是在需要时自动生成链接标志。

此策略为尚未更新以适应缺少 -machine: 标志的项目提供兼容性。策略设置在首次 project()enable_language() 命令初始化上述 CMAKE_*_LINKER_FLAGS 变量时生效。

注意

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

此策略的 OLD 行为是将 MSVC -machine: 标志放在 CMAKE_*_LINKER_FLAGS 中。此策略的 NEW 行为是将 MSVC -machine: 标志放在 CMAKE_*_LINKER_FLAGS 中。

此策略在 CMake 4.1 版中引入。它可以通过 cmake_policy()cmake_minimum_required() 设置。如果未设置,CMake 发出警告,并使用 OLD 行为。

注意

策略的 OLD 行为根据定义已弃用,并可能在未来版本的 CMake 中移除。