CMP0197

在 4.1 版本中新增。

MSVC 链接的 -machine: 标志不在 CMAKE_*_LINKER_FLAGS 中。

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

这在使用多个语言的工具链在是否/如何通过编译器驱动程序将标志传递给链接器时存在分歧,因此存在问题。此外,在面向公众的变量中包含此标志,允许项目或用户更改它,即使它是一个必需项。

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

此策略提供了与尚未更新为预期缺少 -machine: 标志的项目兼容性。策略设置从初始化上述 CMAKE_*_LINKER_FLAGS 变量的第一个 project()enable_language() 命令开始生效。

注意

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

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

此策略是在 CMake 版本 4.1 中引入的。它可以由 cmake_policy()cmake_minimum_required() 命令设置。如果未设置,CMake **不会** 警告,并使用 OLD 行为。

注意

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