CMP0136

在 3.24 版本中添加。

Watcom 运行时库标志由抽象概念选择。

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

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

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

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

注意

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

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

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

注意

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