CMP0136

在 3.24 版本中加入。

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

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

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

此策略向未更新为了解此抽象的项目提供兼容性。策略设置自第一个启用编译器面向 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 中移除。