CMake 3.26 发行说明¶
自 CMake 3.25 以来,所做的更改包括:
新功能¶
语言¶
添加了
ASM_MARMASM
语言以支持 Microsoft ARM 汇编语言。
命令行¶
cmake -E copy
命令行工具现在支持-t
参数。添加了
cmake -E copy_directory_if_different
命令行工具。
配置日志¶
CMake 现在将配置时检查的 YAML 日志写入到构建目录树顶部的
CMakeFiles/CMakeConfigureLog.yaml
中。参见cmake-configure-log(7)
手册。
基于文件 API¶
cmake-file-api(7)
“代码模型”版本 2version
域已更新至 2.5。cmake-file-api(7)
“代码模型”版本 2 “目标”对象为sources
对象新增了一个fileSets
域和关联的fileSetIndex
域。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
编译器设置,这些编译器只有一个前端变体。现已由Visual Studio Generators为 VS 2017 及更高版本设置
CMAKE_VS_VERSION_BUILD_NUMBER
变量,以报告 Visual Studio 四组件版本号。
属性¶
<LANG>_CLANG_TIDY_EXPORT_FIXES_DIR
目标属性已添加,允许clang-tidy
工具将其建议的修复导出到一组.yaml
文件中。一个新的CMAKE_<LANG>_CLANG_TIDY_EXPORT_FIXES_DIR
变量已创建,用于初始化此属性。'>
XCODE_EMBED_EXTENSIONKIT_EXTENSIONS
目标属性已添加,用于告知Xcode
生成器嵌入基于 ExtensionKit 的扩展,例如使用 Background Assets 框架的扩展。可以使用以下方式来自定义嵌入的各个方面
模块¶
ExternalProject
模块的ExternalProject_Add()
命令获得了一个INSTALL_BYPRODUCTS
选项,用于指定install
步骤生成的文件。-
获得了对
sbsa-linux
交叉编译目标的支持,并且如果找到
nvrtc_static
,现在将为其提供导入目标。
FindImageMagick
模块现在提供导入目标。FindPython3
和FindPython
模块获得了 稳定应用程序二进制接口 的支持。UseSWIG
模块获得了perl5
语言的支持。
生成器表达式¶
添加
$<BUILD_LOCAL_INTERFACE:...>
生成器表达式以防止使用要求被导出到依赖项目。
CTest¶
添加了
CTEST_NO_TESTS_ACTION
环境变量,为ctest(1)
的--no-tests=<action>
命令行参数提供默认值。
已弃用和已删除的功能¶
CMakeFiles/CMakeOutput.log
和CMakeFiles/CMakeError.log
文件不再由 CMake 自己的模块来填充。cmake(1)
在出现CMake Error
后不再建议查看这些文件。过去记录到这些文件中的信息现在将记录到cmake-configure-log(7)
中。在 CYGWIN 中,为了与早于 2.8.4 版本的 CMake 兼容而推出的未记录
CMAKE_LEGACY_CYGWIN_WIN32
模式已被移除。
其他更改¶
语言标准标志,例如
-std=c++11
(当由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
。参见策略CMP0143
。顶级
project()
调用现在如果项目命令在cmake_minimum_required()
的相关记录命令的顺序中未得到尊重,将发出作者警告。cmake --trace
现在遵循try_compile()
和try_run()
的调用。
更新¶
自 CMake 3.26.0 起所做的更改包括以下内容。
3.26.1、3.26.2、3.26.3、3.26.4、3.26.5¶
这些版本未对记录的功能或接口进行任何更改。进行了一些实现更新以支持生态系统更改和/或修复回归。
3.26.6¶
cmake-file-api(7)
“codemodel” 版本 2 “target” 对象fileSets
字段由 CMake 3.26.0 引入,其baseDirectories
成员的条目即使在顶级源目录内部也错误地表示为绝对路径。此问题现已修复。必须更新客户端以预期顶级源目录下的相对路径。