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" 版本 2version
欄位已更新至 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 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 多組態
產生器)為所有組態提供編譯命令。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
成員的條目即使在最上層原始碼目錄內,也被錯誤地表示為絕對路徑。這已得到修正。必須更新用戶端以預期最上層原始碼目錄下的相對路徑。