CMP0136

在 3.24 版本中添加。

Watcom 运行时库标志由一个抽象层选择。

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

在 CMake 3.23 及更早版本中,Watcom 运行时库选择标志会自动由 CMake 添加到默认的 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,这等同于原始标志。

此策略提供了与尚未感知到此抽象的项目兼容性。此策略设置从第一个 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 版本中被移除。