CMake 4.3 发行说明

自 CMake 4.2 以来的变更如下。

新功能

通用包规范

  • 增加了对导入和导出使用 通用包规范 (CPS) 描述的包的支持。这允许以非 CMake 语言的格式交换富有表现力、功能丰富的包描述,从而提高了构建系统的互操作性。

    • find_package() 现在可以搜索并导入 CPS 包。

    • install()export() 命令新增了 PACKAGE_INFO 子命令,用于生成 CPS 包描述。

    • project() 命令新增了 COMPAT_VERSIONSPDX_LICENSE 选项。在创建 CPS 包描述时,这些值可以被继承。详情请参阅 install(PACKAGE_INFO) 文档。

仪器化

  • cmake-instrumentation(7) 已被添加,用于在 CMake 项目的配置、生成、构建、测试和安装步骤中收集计时数据、目标信息和系统诊断信息。

    • 仪器化数据经过 索引 并提供给 回调函数 进行自定义处理。

    • 仪器化数据包含在提交给 CDash 的报告中。

    • (可选)可以生成 Google Trace Event Format 文件来可视化仪器化数据。

预设

  • cmake-presets(7) 文件现在支持模式版本 11。测试预设下的 jobs 字段现在支持空字符串,以匹配 ctest --parallel 在省略该值时的行为。

  • 无论模式版本如何,构建和测试预设下的 jobs 字段不再接受负整数值。

基于文件的 API

  • cmake-file-api(7) “codemodel” 版本 2 的版本字段已更新至 2.10。

  • cmake-file-api(7) “codemodel” 版本 2 的 “target” 对象新增了一个 interfaceSources 数组字段,且 sourceGroups 数组项新增了一个 interfaceSourceIndexes 数组字段。

平台

  • HIP 语言代码现在可以编译为 SPIR-V 目标,例如通过 chipStar。请参阅 CMAKE_HIP_PLATFORM 变量。

命令行

  • cmake --version 现在支持 =json-v1 值,以 JSON 格式打印详细的版本信息。

  • cmake --build 现在支持同时指定构建目录和预设。构建预设将与替换后的显式构建目录一起使用。

  • cmake -E 命令 md5sum, sha1sum, sha224sum, sha256sum, sha384sumsha512sum 现在支持通过传递 - 从标准输入读取。

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

  • cmake -E tar 命令行工具

    • 增加了 --cmake-tar-compression-level 标志以指定压缩级别。

    • 增加了 --cmake-tar-compression-method 标志以指定压缩方法。

    • 增加了 --cmake-tar-threads 标志以启用多线程操作。

    • 现在支持为 7zipzip 格式指定压缩方法和级别。

    • 增加了 --format=raw 标志以禁用压缩。

    • 增加了 --lzma 标志以指定 LZMA 压缩。

命令

  • 添加了 cmake_instrumentation() 命令,用于进行项目级别的仪器化查询。

  • file(ARCHIVE_CREATE) 命令

    • 增加了 THREADS 选项以启用多线程操作。

    • 现在支持将压缩方法 Deflate 作为 GZip 的别名。

    • 现在支持压缩方法 LZMA

    • 现在支持将压缩方法 LZMA2 作为 XZ 的别名。

    • 现在支持为 7zip 格式使用压缩方法 PPMd

    • 现在支持为 7zipzip 格式使用 COMPRESSIONCOMPRESSION_LEVEL 选项。

  • get_property()set_property() 命令现在支持针对目标文件集属性的 FILE_SET 作用域。

  • string(JSON) 命令新增了 GET_RAWSTRING_ENCODE 模式。

  • source_group() 命令现在支持 生成器表达式

  • cmake_host_system_information() 命令新增了 LOCALE_CHARSET 查询,用于获取预期的 cmake-language(7) 脚本编码。

变量

属性

模块

  • FindCUDAToolkit 模块现在为 bin2c 工具创建了一个 CUDA::bin2c 导入目标。

  • FindLibXml2 模块新增了 LibXml2_USE_STATIC_LIBS 提示,用于选择静态库。

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

  • FindSQLite3 模块现在提供带有 SQLite3:: 前缀的导入目标。

  • UseJava 模块的 add_jar() 命令现在接受一个新的 INCLUDE_MODULES 选项,将参数添加到 Java 编译器的 --module-path 参数中。这允许构建在构建过程中使用 JPMS 模块的 JAR 文件。

生成器表达式

CTest

  • CTestCoverageCollectGCOV 模块

    • 现在支持 TARBALL_COMPRESSION 方法 LZMA

    • 现在支持将 TARBALL_COMPRESSION 方法 LZMA2 作为 XZ 的别名。

    • 现在支持 FROM_EXT 使用对应 LZMAZSTD 压缩的文件扩展名。

CPack

已弃用和移除的功能

其他更改