CMP0136

在 3.24 版本中添加。

Watcom 运行时库标志通过一个抽象层进行选择。

针对 Watcom ABI 的编译器具有选择 Watcom 运行时库的标志。

在 CMake 3.23 及更早版本中,Watcom 运行时库选择标志会自动添加到默认的 CMAKE_<LANG>_FLAGS_<CONFIG> 缓存条目中。这允许用户编辑他们的缓存条目来调整标志。然而,这种默认标志的存在对于想要以编程方式选择不同运行时库的项目来说是有问题的。特别是,它需要使用对 CMake 内置默认值有了解的字符串编辑 CMAKE_<LANG>_FLAGS_<CONFIG> 变量,以便替换它们。

CMake 3.24 及更高版本更倾向于将 Watcom 运行时库选择标志从默认的 CMAKE_<LANG>_FLAGS_<CONFIG> 值中排除,并提供一个一等抽象层。可以使用 CMAKE_WATCOM_RUNTIME_LIBRARY 变量和 WATCOM_RUNTIME_LIBRARY 目标属性来选择 Watcom 运行时库。如果它们未设置,CMake 将使用默认值 MultiThreadedDLL 在 Windows 上,以及 SingleThreaded 在其他平台上,这与原始标志等效。

此策略为尚未更新以了解该抽象层的项目提供兼容性。该策略设置在第一个 project()enable_language() 命令启用针对 Watcom ABI 的编译器的语言时生效。

注意

一旦策略在项目顶部生效,就必须在整个树中使用该选择。在包含嵌套项目的项目中,请确保一起转换所有内容。

此策略的 OLD 行为是将 Watcom 运行时库标志放置在默认的 CMAKE_<LANG>_FLAGS_<CONFIG> 缓存条目中,并忽略 CMAKE_WATCOM_RUNTIME_LIBRARY 抽象层。此策略的 NEW 行为是将 Watcom 运行时库标志放置在默认缓存条目中,并使用抽象层。

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

注意

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