CMake 3.26 发行说明

自 CMake 3.25 以来所做的更改包括以下内容。

新功能

语言

  • 添加了 ASM_MARMASM 语言来支持 Microsoft ARM 汇编语言。

命令行

  • cmake -E copy 命令行工具现在支持 -t 参数。

  • 添加了 cmake -E copy_directory_if_different 命令行工具。

配置日志

  • CMake 现在将配置时检查的 YAML 日志写入构建树顶部的 CMakeFiles/CMakeConfigureLog.yaml 文件。请参阅 cmake-configure-log(7) 手册。

基于文件的 API

  • cmake-file-api(7) "codemodel" 版本 2 的 version 字段已更新为 2.5。

  • cmake-file-api(7) "codemodel" 版本 2 的 "target" 对象在 sources 对象中新增了 fileSets 字段和关联的 fileSetIndex 字段。

  • cmake-file-api(7) "codemodel" 版本 2 的 "directory" 对象 installers 字段新增了 cxxModuleBmi 安装程序类型和关联的 cxxModuleBmiTarget 字段。

  • cmake-file-api(7) 新增了 "configureLog" 对象种类,可用于稳定访问 cmake-configure-log(7)

命令

  • add_custom_command()add_custom_target() 命令现在支持其 COMMENT 选项中的 生成器表达式

  • message() 命令新增了 CONFIGURE_LOG 模式,用于在 cmake-configure-log(7) 中记录条目。

  • string(TIMESTAMP)file(TIMESTAMP) 命令现在支持时区的 %z%Z 说明符。

  • try_compile()try_run() 命令新增了 LOG_DESCRIPTION 选项,用于指定在 cmake-configure-log(7) 中记录的文本。

  • try_compile()try_run() 命令新增了 NO_LOG 选项,用于跳过记录 cmake-configure-log(7) 条目。

变量

属性

模块

  • ExternalProject 模块的 ExternalProject_Add() 命令新增了 INSTALL_BYPRODUCTS 选项,用于指定由 install 步骤生成的文件的。该选项可用于指定在 install 步骤生成的副产品。

  • FindCUDAToolkit 模块

    • 增加了对 sbsa-linux 交叉编译目标的支持,并且

    • 现在为 nvrtc_static 提供了导入的目标(如果找到)。

  • FindImageMagick 模块现在提供导入的目标。

  • FindPython3FindPython 模块增加了对 稳定应用程序二进制接口 的支持。

  • UseSWIG 模块增加了对 perl5 语言的支持。

生成器表达式

  • 添加了 $<BUILD_LOCAL_INTERFACE:...> 生成器表达式,以防止将使用要求导出到依赖项目。

CTest

已弃用和已删除的功能

  • CMake 的内置模块不再填充 CMakeFiles/CMakeOutput.logCMakeFiles/CMakeError.log 文件。 cmake(1) 在发生 CMake Error 后不再建议查看它们。以前记录到这些文件的信息现在记录到 cmake-configure-log(7) 中。

  • 在 CYGWIN 上,已移除与 2.8.4 之前 CMake 版本兼容的未记录的 CMAKE_LEGACY_CYGWIN_WIN32 模式。

其他更改

更新

自 CMake 3.26.0 以来所做的更改包括以下内容。

3.26.1, 3.26.2, 3.26.3, 3.26.4, 3.26.5

  • 这些版本未对已记录的功能或接口进行任何更改。为了支持生态系统更改和/或修复回归,进行了一些实现更新。

3.26.6

  • cmake-file-api(7) "codemodel" 版本 2 的 fileSets 字段由 CMake 3.26.0 引入,其 baseDirectories 成员的条目被错误地表示为绝对路径,即使它们位于顶层源目录内。此问题已修复。客户端必须更新以期望顶层源目录下的相对路径。