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 產生器 會設定
CMAKE_VS_VERSION_BUILD_NUMBER
變數,以供 VS 2017 及更新版本回報四元件的 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>
命令列參數提供預設值。
已棄用和移除的功能¶
CMake 的內建模組不再填充
CMakeFiles/CMakeOutput.log
和CMakeFiles/CMakeError.log
檔案。發生CMake Error
後,cmake(1)
不再建議查看這些檔案。先前記錄到這些檔案中的資訊現在會改為記錄到cmake-configure-log(7)
。在 CYGWIN 上,為與 CMake 2.8.4 之前的版本相容而未記錄的
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
成員的項目錯誤地表示為絕對路徑,即使它們位於最上層原始程式碼目錄中。此問題已修正。必須更新用戶端,以期望最上層原始程式碼目錄下的相對路徑。