CMake 3.22 发行说明

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

新功能

命令

变量

属性

模块

CTest

  • ctest(1) 学习了在运行时识别附加到测试的标签。之前只能通过使用 LABELS 测试属性在配置时附加标签。更多信息请参见 附加测试测量

  • ctest(1) 学习了通过 ENVIRONMENT_MODIFICATION 属性修改测试环境。这允许根据测试时存在的环境更新环境变量。

  • ctest_memcheck() 命令现在还生成一个 DynamicAnalysis-Test.xml 文件,可用于将测试结果提交到 CDash。

CPack

已弃用和移除的功能

其他更改

  • 编译 特性 功能现在在未指定标准级别时正确禁用或启用编译器扩展,并避免在请求的设置与编译器的默认设置匹配时,不必要地添加语言标准标志。参见 CMP0128

  • 编译 特性 功能现在会忽略未启用语言的特性。

  • Ninja 生成器 现在如果可用,会使用 ccmake(1) 实现 edit_cache 目标。

  • NinjaNMake Makefiles 生成器现在使用 MSVC 的 -external:I 标志用于系统包含。这从 VS 16.10(工具链版本 14.29.30037)开始可用。

  • CPack NSIS 生成器 现在要求 NSIS 3.03 或更高版本。

更新

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

3.22.1

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

3.22.2

  • 策略 CMP0128OLD 行为已修复,即使在指定标准匹配编译器默认值时也添加了标志。

3.22.3

  • while() 命令再次忽略条件评估中的错误,如同 CMake 3.21 及更早版本一样。此错误已在 3.22.0 中修复,但暴露了现有项目中的错误。为了恢复兼容性,已撤销此修复。此修复可能会在 CMake 的未来版本中通过策略恢复。

3.22.4, 3.22.5, 3.22.6

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