CMake 3.26 发行说明

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

新功能

语言

  • 添加了“ASM_MARMASM”语言以支持 Microsoft ARM 汇编语言。

命令行

配置日志

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

基于文件的 API

命令

变量

  • CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT 变量现在设置为只有一个前端变体的 GNUMSVCAppleClang 编译器。

  • CMAKE_VS_VERSION_BUILD_NUMBER 变量现在由 Visual Studio Generators 为 VS 2017 及更高版本设置,以报告由四部分组成的 Visual Studio 版本号。

特性

模块

  • ExternalProject 模块的 ExternalProject_Add() 命令获得了一个 INSTALL_BYPRODUCTS 选项来指定由 install 步骤生成的文件。

  • FindCUDAToolkit 模块:

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

    • 如果找到,现在为 nvrtc_static 提供一个导入的目标。

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

  • FindPython3 和 FindPython 模块获得了对“稳定应用程序二进制接口”的支持。

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

生成器表达式

C测试

弃用和删除的功能

  • CMake 的内置模块不再填充“CMakeFiles/CMakeOutput.log”和“CMakeFiles/CMakeError.log”文件。 cmake(1) 不再建议在发生 CMake 错误 后查看它们。之前记录到这些文件的信息改为记录到 cmake-configure-log(7)

  • 在 CYGWIN 上,用于与 2.8.4 之前的 CMake 版本兼容的未记录的“CMAKE_LEGACY_CYGWIN_WIN32”模式已被删除。

其他变化

  • 语言标准标志,例如``-std=c++11``,当由于:command:target_compile_featuresCMAKE_<LANG>_STANDARD 而生成时,现在放置在标志之前由 target_compile_options() 添加,而不是在它们之后。

  • 对于所有“COMPILE_DEFINITIONS”属性,项目上的任何前导“-D”都将被删除,无论它是否由生成器表达式指定。

  • CMAKE_EXPORT_COMPILE_COMMANDS 启用的``compile_commands.json`` 数据库现在在编译命令对象中提供``output`` 字段。这允许多配置生成器,例如 Ninja Multi-Config 生成器,为所有配置提供编译命令。

  • USE_FOLDERS 全局属性默认被视为 ON。请参阅政策:policy:CMP0143

  • 如果不遵守与 cmake_minimum_required 相关的记录命令顺序,则顶级 project() 调用现在将发出作者警告。

  • cmake --trace 选项现在跟随 try_compile()try_run() 调用。

更新

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

3.26.1、3.26.2、3.26.3、3.26.4

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