CMP0136

在 3.24 版本加入.

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

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

在 CMake 3.23 及以下版本中,CMake 会自动将 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 在 Windows 上使用默认值“MultiThreadedDLL”,在其他平台上使用“SingleThreaded”,这等同于原始标志。

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

备注

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

此策略的“旧”行为是将 Watcom 运行时库标志放置在默认的 CMAKE_<LANG>_FLAGS_<CONFIG> 缓存条目中并忽略 CMAKE_WATCOM_RUNTIME_LIBRARY 抽象。此策略的“新”行为是*不*将 Watcom 运行时库标志放在默认缓存条目中,而是使用抽象。

此策略是在 CMake 版本 3.24 中引入的。使用 cmake_policy() 命令将其显式设置为 OLDNEW。与许多政策不同,CMake 版本 |release|当此策略未设置且仅使用“旧”行为时*不*发出警告。

备注

策略的“旧”行为是 :manual:根据定义 <cmake-policies(7)> 已弃用,并且可能会在未来版本的 CMake 中删除。