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" 对象获得了新的 fileSets 字段以及 sources 对象中相关的 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 步骤生成的*.p*

  • FindCUDAToolkit 模块

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

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

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

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

  • UseSWIG 模块获得了对 perl5 语言的支持。

生成器表达式

CTest

已弃用和已删除的功能

  • 文件 CMakeFiles/CMakeOutput.logCMakeFiles/CMakeError.log 不再由 CMake 的内置模块填充。 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 成员的条目错误地表示为绝对路径,即使它们位于顶层源目录内。此问题已修复。客户端必须更新以预期顶层源目录下的相对路径。