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 及更早版本所做的那样。此错误在 3.22.0 中得到修复,但导致现有项目中出现错误。已还原此修复以恢复兼容性。此修复可能会通过策略在未来版本的 CMake 中恢复。

3.22.4、3.22.5、3.22.6

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