CMake 3.24 发行说明

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

新功能

预设

  • cmake-presets(7) 文件现在支持架构版本 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++ 安装和编译器选择(cc21kccblkfn)。

命令

变量

特性

模块

  • ExternalProject 模块 ExternalProject_Add() 命令获得了一个新的 DOWNLOAD_EXTRACT_TIMESTAMP 选项,用于控制当 URL 下载方法为用过的。添加策略:policy:CMP0135 以默认启用该选项。

  • FetchContent 模块和 find_package() 命令现在支持集成功能:

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

  • FindMatlab 模块 matlab_add_mex 函数获得了一个 NO_IMPLICIT_LINK_TO_MATLAB_LIBRARIES 选项来禁用 MATLAB 库的自动链接。

  • FindVulkan 模块现在支持组件选择要查找的 VulkanSDK 工具和库,以及 Vulkan SDK 标头和库。

  • FindZLIB 获得了一个新的 ZLIB_USE_STATIC_LIBS 变量来仅搜索静态库。

生成器表达式

C测试

包装

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

  • 当使用 libarchive 3.6 或更高版本编译时,CPack 现在支持 zstd 压缩的 CPACK_THREADS 选项。它由 cmake.org 上提供的官方 CMake 二进制文件支持。

弃用和删除的功能

  • CPack 模块不再在 CPack DragNDrop Generator 中默认启用 SLA。请参阅政策:policy:CMP0133CPACK_DMG_SLA_USE_RESOURCE_FILE_LICENSE 变量。

  • 已弃用的 CPack PackageMaker Generator 已被删除。

  • FindGLUT 模块不再提供未记录的 GLUT_LIBRARYGLUT_INCLUDE_PATH 结果变量。

  • FindVulkan 模块不再默默地忽略由 find_package(Vulkan REQUIRED ...) 调用请求的未知组件。通过添加对组件的支持,对未知组件的请求现在会产生错误。

其他变化

  • 在构建目录中首次运行 CMake 期间启用相应语言时,CMake 不再设置环境变量,如:envvar:CCCXX 等。请参阅政策:policy:CMP0132

  • CheckIPOsupported 模块 check_ipo_supported() 命令现在使用调用者的 CMAKE_<LANG>_FLAGSCMAKE_<LANG>_FLAGS_<CONFIG> 值。请参阅政策:policy:CMP0138

  • MSYS MakefilesMinGW Makefiles 生成器,当未明确指定编译器时,现在选择在 PATH 环境变量列出的目录中找到的第一个编译器(任何名称)。

  • try_compile() 命令 whole-project 签名现在传播平台变量。请参阅政策:policy:CMP0137

  • while() 命令现在可以在条件评估期间诊断错误。请参阅政策:policy:CMP0130

  • cmake.org 上提供的预编译 macOS 二进制文件不再将 SLA 附加到 .dmg` 包。这已被删除,因为 macOS 12 弃用了用于附加 .dmg 资源的工具。

  • 预编译的 Windows arm64 二进制文件现在在 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

  • 此版本未对记录的功能或界面进行任何更改。进行了一些实施更新以支持生态系统更改和/或修复回归。