CMake 3.24 发布说明

自 CMake 3.23 以来的更改包括以下内容。

新功能

预设

  • cmake-presets(7) 文件现支持 schema 版本 5

  • cmake-presets(7) 文件现支持 ${pathListSep} 宏,该宏会根据平台展开为 :;

  • cmake-presets(7) 文件新增了在测试预设中指定 testOutputTruncation 字段的支持,该字段指定了达到最大测试输出大小时的截断模式。

生成器

  • Green Hills MULTI 生成器现为任何 CMake 文件更新时生成重新运行 CMake 的构建规则。

  • Visual Studio 生成器 在使用 VS 2019 Update 11 或更高版本时,现支持 SYSTEM 头文件。

命令行

编译器

  • LLVM 的 flang Fortran 编译器现已在某些平台上受支持,编译器 ID 为 LLVMFlang

  • ADSP 编译器支持(SHARC 和 Blackfin)现已覆盖 CCES 和 VDSP++ 安装,所需的配置现已在编译器模块本身完成,而非 Generic-ADSP 平台模块中。

平台

  • 已添加专用的 ADSP 平台以取代现有的 Generic-ADSP 实现。该平台具备根据 CMAKE_SYSTEM_PROCESSOR 变量自动检测最新 CCES/VDSP++ 安装和编译器选择(cc21k vs. ccblkfn)的功能。

命令

变量

属性

模块

生成器表达式

  • 新增了 LINK_LIBRARY 生成器表达式,用于管理链接步骤中库的指定方式。变量 CMAKE_<LANG>_LINK_LIBRARY_USING_<FEATURE>CMAKE_LINK_LIBRARY_USING_<FEATURE> 用于定义可由 LINK_LIBRARY 生成器表达式使用的特性。此外,还提供了 LINK_LIBRARY_OVERRIDELINK_LIBRARY_OVERRIDE_<LIBRARY> 目标属性来解决不兼容的特性。

    LINK_LIBRARY 生成器表达式在面向 Apple 平台时,可以以多种方式链接框架。新增了以下特性:

    • FRAMEWORK

    • NEEDED_FRAMEWORK

    • REEXPORT_FRAMEWORK

    • WEAK_FRAMEWORK

    LINK_LIBRARY 生成器表达式在面向 Apple 平台时,可以以多种方式链接库。新增了以下特性:

    • NEEDED_LIBRARY

    • REEXPORT_LIBRARY

    • WEAK_LIBRARY

    LINK_LIBRARY 生成器表达式新增了 WHOLE_ARCHIVE 特性,用于强制加载静态库中的所有成员。该特性支持以下目标平台:

    • 所有 Apple 变体

    • Linux

    • 所有 BSD 变体

    • SunOS

    • Windows

    • CYGWIN

    • MSYS

  • 新增了 LINK_GROUP 生成器表达式,用于管理链接步骤中库的分组。变量 CMAKE_<LANG>_LINK_GROUP_USING_<FEATURE>CMAKE_LINK_GROUP_USING_<FEATURE> 用于定义可与 LINK_GROUP 生成器表达式一起使用的特性。此版本定义了 RESCAN 特性,用于处理使用 Linux、BSD、SunOS 和 Windows GNU 工具链的工具链时静态库之间的循环引用。

  • 新增了 PATH 生成器表达式,用于管理路径。

  • 新增了 PATH_EQUAL 生成器表达式,用于管理路径比较。

  • 新增了 TARGET_BUNDLE_DIR_NAME 生成器表达式,用于评估给定包目标(bundle target)的包目录名称。

CTest

CPack

  • CPack WIX Generator 新增了变量 CPACK_WIX_ARCHITECTURE,用于指定安装程序架构,以支持运行 Windows for ARM 的计算机。

  • CPack 现在支持使用 libarchive 3.6 或更高版本编译时的 zstd 压缩的 CPACK_THREADS 选项。官方 CMake 二进制文件在 cmake.org 上也支持此功能。

已弃用和已移除的功能

其他更改

更新

自 CMake 3.24.0 以来的更改包括以下内容。

3.24.1, 3.24.2

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

3.24.3

  • 3.24.0 中新增的 LLVMFlang Fortran 编译器支持已得到扩展:

    • 现已支持 Fortran 与 C 或 CXX 之间的混合语言链接。

    • 现已支持 Windows 上的 GNU ABI(MinGW),但尚未支持 MSVC ABI。

  • 进行了一些实现更新,以支持生态系统更改和/或修复回归。

3.24.4

  • 此版本未对文档功能或接口进行任何更改。进行了一些实现更新以支持生态系统更改和/或修复回归。