CMake 3.22 发行说明

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

新功能

命令

变量

特性

模块

  • CMakeDependentOption 模块 cmake_dependent_option() 宏现在支持完整的 条件语法。请参阅政策:policy:CMP0127

  • FetchContent 模块现在通过 CMAKE_TLS_VERIFY、CMAKE_TLS_CAINFO、CMAKE_NETRC 和 CMAKE_NETRC_FILE 变量(定义时)传递给底层模块: ExternalProject 子构建。以前,这些变量被 FetchContent 默默地忽略了。

  • FindBLAS 和 FindLAPACK 模块获得了 BLA_SIZEOF_INTEGER 选项来查找 ABI 使用特定整数大小的 BLAS/LAPACK。

  • FindJasper 模块现在提供了一个导入的目标。

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

  • FindPkgConfig 模块获得了一个 PKG_CONFIG_ARGN 变量来指定 pkg-config 调用的参数。

  • GoogleTest 模块 gtest_discover_tests() 函数获得了一个 TEST_FILTER 选项,可以在测试发现期间使用 --gtest_filter 过滤测试。

  • Visual Studio 生成器UseSWIG 模块现在可以使用 swig 工具生成隐式依赖项。

C测试

  • ctest(1) 学会了在运行时识别附加在测试上的标签。以前只能在配置时使用 LABELS 测试属性将标签附加到测试。有关更多信息,请参阅 附加测试测量

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

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

包装

弃用和删除的功能

其他变化

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

  • Compile Features 功能现在忽略未启用语言的功能。

  • 忍者生成器 现在使用 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

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