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)
“codemodel” 版本 2 的version
字段已更新为 2.5。cmake-file-api(7)
“codemodel” 版本 2 的 “target” 对象获得了一个新的fileSets
字段和关联的fileSetIndex
字段到sources
对象。cmake-file-api(7)
获得了一个新的 “configureLog” 对象类型,可以稳定访问cmake-configure-log(7)
。
命令¶
add_custom_command()
和add_custom_target()
命令现在在其COMMENT
选项中支持生成器表达式
。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)
条目。
变量¶
现在为只有一种前端变体的
GNU
、MSVC
和AppleClang
编译器设置了CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT
变量。Visual Studio 生成器 现在为 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 错误
后查看它们。以前记录到这些文件的信息现在记录到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
。如果未遵守关于
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、3.26.5¶
这些版本未对文档化的特性或接口进行任何更改。进行了一些实现更新以支持生态系统更改和/或修复回归。
3.26.6¶
cmake-file-api(7)
“codemodel” 版本 2 “target” 对象的fileSets
字段由 CMake 3.26.0 引入,其baseDirectories
成员的条目即使在顶层源目录内部也被错误地表示为绝对路径。 这已被修复。 客户端必须更新以期望顶层源目录下的相对路径。