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 Generator 现在需要 NSIS 3.03 或更高版本。

更新

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

3.22.1

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

3.22.2

  • CMP0128OLD 行为被修复,即使指定的标准与编译器默认值匹配时也会添加标志。

3.22.3

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

3.22.4, 3.22.5, 3.22.6

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