CMake 3.26 发行说明¶
自 CMake 3.25 以来所做的更改包括以下内容。
新功能¶
语言¶
添加了“ASM_MARMASM”语言以支持 Microsoft ARM 汇编语言。
命令行¶
cmake -E copy <cmake-E copy>`命令行工具现在支持`-t``参数。添加了
cmake -E copy_directory_if_different命令行工具。
配置日志¶
CMake 现在将配置时检查的 YAML 日志写入构建树顶部的“CMakeFiles/CMakeConfigureLog.yaml”。请参阅
cmake-configure-log(7)手册。
基于文件的 API¶
cmake-file-api(7)"codemodel" version 2version字段已更新为 2.5。cmake-file-api(7)“codemodel” version 2 “target” 对象获得了一个新的fileSets字段并将fileSetIndex字段关联到sources对象。cmake-file-api(7)获得了一个新的“configureLog”对象类型,可以稳定访问cmake-configure-log(7)。
命令¶
add_custom_command()和add_custom_target()命令现在在其COMMENT选项中支持generator expressions。message()命令获得了CONFIGURE_LOG模式来记录cmake-configure-log(7)中的条目。string(TIMESTAMP)和file(TIMESTAMP)命令现在支持时区的%z和%Z说明符。try_compile()和try_run()命令获得了一个LOG_DESCRIPTION选项,指定要记录在cmake-configure-log(7)中的文本。try_compile()和try_run()命令获得了NO_LOG选项以跳过记录cmake-configure-log(7)条目。
变量¶
CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT变量现在设置为只有一个前端变体的GNU、MSVC和AppleClang编译器。CMAKE_VS_VERSION_BUILD_NUMBER 变量现在由 Visual Studio Generators 为 VS 2017 及更高版本设置,以报告由四部分组成的 Visual Studio 版本号。
特性¶
添加了
<LANG>_CLANG_TIDY_EXPORT_FIXES_DIR目标属性,以允许clang-tidy工具将其建议的修复导出到一组.yaml文件中。创建了一个新的CMAKE_<LANG>_CLANG_TIDY_EXPORT_FIXES_DIR变量来初始化此属性。添加了:prop_tgt:XCODE_EMBED_EXTENSIONKIT_EXTENSIONS <XCODE_EMBED_<type>> 目标属性,以告知:generator:Xcode 生成器嵌入基于 ExtensionKit 的扩展,例如使用后台资产框架的扩展。嵌入的各个方面可以通过以下方式定制:
模块¶
ExternalProject模块的ExternalProject_Add()命令获得了一个INSTALL_BYPRODUCTS选项来指定由install步骤生成的文件。FindCUDAToolkit模块:获得了对
sbsa-linux交叉编译目标的支持,并且如果找到,现在为
nvrtc_static提供一个导入的目标。
FindImageMagick模块现在提供导入的目标。FindPython3 和 FindPython 模块获得了对“稳定应用程序二进制接口”的支持。
UseSWIG模块获得了对perl5语言的支持。
生成器表达式¶
添加了
$<BUILD_LOCAL_INTERFACE:...>生成器表达式以防止将使用要求导出到相关项目。
C测试¶
CTEST_NO_TESTS_ACTION环境变量被添加为--no-tests=<action>的命令行参数提供默认值 :manual:` ctest(1)`。
弃用和删除的功能¶
CMake 的内置模块不再填充“CMakeFiles/CMakeOutput.log”和“CMakeFiles/CMakeError.log”文件。
cmake(1)不再建议在发生CMake 错误后查看它们。之前记录到这些文件的信息改为记录到cmake-configure-log(7)。在 CYGWIN 上,用于与 2.8.4 之前的 CMake 版本兼容的未记录的“CMAKE_LEGACY_CYGWIN_WIN32”模式已被删除。
其他变化¶
语言标准标志,例如``-std=c++11``,当由于:command:target_compile_features 或
CMAKE_<LANG>_STANDARD而生成时,现在放置在标志之前由target_compile_options()添加,而不是在它们之后。对于所有“COMPILE_DEFINITIONS”属性,项目上的任何前导“-D”都将被删除,无论它是否由生成器表达式指定。
由
CMAKE_EXPORT_COMPILE_COMMANDS启用的``compile_commands.json`` 数据库现在在编译命令对象中提供``output`` 字段。这允许多配置生成器,例如 Ninja Multi-Config 生成器,为所有配置提供编译命令。USE_FOLDERS全局属性默认被视为ON。请参阅政策:policy:CMP0143。如果不遵守与 cmake_minimum_required 相关的记录命令顺序,则顶级
project()调用现在将发出作者警告。cmake --trace选项现在跟随try_compile()和try_run()调用。
更新¶
自 CMake 3.26.0 以来所做的更改包括以下内容。
3.26.1、3.26.2、3.26.3、3.26.4¶
这些版本未对记录的功能或界面进行任何更改。进行了一些实施更新以支持生态系统更改和/或修复回归。