CMake 4.0 发行说明

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

新特性

基于文件的 API

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

  • cmake-file-api(7) “codemodel” 版本 2 的 “target” 对象新增了 debugger 字段。

命令行

命令

变量

属性

模块

生成器表达式

  • $<PATH> 生成器表达式获得了 NATIVE_PATH 操作,用于将 CMake 路径转换为本机路径。

CTest

  • Windows 上的 ctest --interactive-debug-mode 选项现在默认在测试进程中启用 Windows 错误报告,允许它们创建调试弹出窗口和核心转储。这恢复了 CMake 3.11 在更新到 libuv 后移除的行为,因为更新到 libuv 使其成为可能。

CPack

已弃用和移除的特性

其他更改

  • 在使用 Ninja 生成器Makefile 生成器 的 macOS 上,当在 /usr/bin 中找到编译器时,现在按原样使用它,并且不再映射到 Xcode 内的相应编译器。CMake 3.2 引入了映射,以允许构建树继续使用其原始编译器,即使 xcode-select 切换到不同的 Xcode 安装也是如此。但是,Xcode 内的编译器在没有显式 -isysroot 标志的情况下无法使用,因此不适合传递给任意第三方构建系统。此外,映射行为可能会覆盖用户指定的编译器路径。因此,此行为已被还原。

  • 面向 macOS 的构建不再默认选择任何 SDK 或将 -isysroot 标志传递给编译器。相反,编译器应自行选择默认的 macOS SDK。为了使用不执行此操作的编译器,用户现在必须在配置其构建时指定 -DCMAKE_OSX_SYSROOT=macosx

  • 在 AIX 上,SHARED 库目标现在默认生成共享库归档文件。请参阅策略 CMP0182

  • cmake --preset 命令不再默认输出预设的 CMake 缓存和环境变量的摘要。现在,仅当消息日志级别设置为 VERBOSEDEBUGTRACE 时,才通过 cmake --log-level 选项或 CMAKE_MESSAGE_LOG_LEVEL 缓存变量显示该摘要。

  • 预编译的 SunOS sparc64x86_64 二进制文件现在在 cmake.org 上提供。