CMake 3.23 版本發行說明

自 CMake 3.22 以來進行的變更包括以下內容。

新功能

預設集

  • cmake-presets(7) 檔案現在支援架構版本 4

  • cmake-presets(7) 檔案現在有一個可選的 include 欄位,允許檔案包含其他檔案。

  • cmake-presets(7) 檔案現在支援 ${fileDir} 巨集,其中包含預設集檔案所在的目錄。

  • cmake-presets(7) 獲得了在建置預設集中指定 resolvePackageReferences 命令列選項的支援,以控制從外部套件管理器還原套件參考的行為。目前,這僅受 Visual Studio 產生器支援,以支援從 NuGet 還原套件。其他產生器會忽略此選項。

產生器

命令列

編譯器

  • 現在支援基於 LLVM 的 IBM Open XL C/C++ 編譯器,編譯器 ID 為 IBMClang

  • 現在支援 MCST LCC 編譯器,編譯器 ID 為 LCC。請參閱政策 CMP0129

基於檔案的 API

  • cmake-file-api(7) "codemodel" 版本 2 version 欄位已更新為 2.4

  • cmake-file-api(7) "codemodel" 版本 2 directory 物件 installers 欄位新增了 fileSet 安裝程式類型。

命令

  • define_property() 命令新增了 INITIALIZE_FROM_VARIABLE 選項,以使目標屬性在建立目標時從變數初始化。

  • install(TARGETS) 命令新增了 FILE_SET 引數,可用於安裝與目標關聯的標頭檔案集。

  • string(TIMESTAMP)file(TIMESTAMP) 命令現在支援微秒的 %f 指定符。

  • target_sources() 命令新增了 FILE_SET 模式,可用於將標頭新增為目標的僅標頭來源檔案。

變數

屬性

模組

CTest

CPack

已棄用和移除的功能

  • cmake(1) 現在在指定多個來源路徑時會發出警告,例如 cmake -S src1 src2。這從未被正式記錄或支援,但舊版本意外地接受了多個來源路徑並使用了最後指定的路徑。請更新腳本以避免傳遞多個來源路徑參數。

  • cpack(1) 未記錄的 OSXX11 產生器已被移除。

  • 先前未記錄的 CPACK_PACKAGEMAKER_CHOICES 變數,用於 CPack.distribution.dist.in 範本中,已被新的 CPACK_APPLE_PKG_INSTALLER_CONTENT 變數取代。這僅影響那些提供自己客製化 CPack.distribution.dist.in 範本檔案,但仍依賴 CPACK_PACKAGEMAKER_CHOICES 設定的專案。這些客製化範本檔案應更新為使用 CPACK_APPLE_PKG_INSTALLER_CONTENT,或完全定義所有範本檔案的內容,而無需依賴任何變數的替換。

其他變更

更新

自 CMake 3.23.0 以來進行的變更包括以下內容。

3.23.1

  • CMake 3.23.0 中新增的 target_sources() FILE_SET 功能尚未將標頭檔正確放置在 Apple FRAMEWORK 目標中。在 CMake 未來版本中進行進一步工作之前,現在將 HEADERS 類型的 FILE_SET 新增到 Apple 平台上的此類目標會產生錯誤。

  • CMake 3.23.0 中新增的 HEADER_SETSINTERFACE_HEADER_SETS 目標屬性現在是 target_sources() 命令建立的標頭集合的唯讀記錄。

3.23.2

  • 在 CMake 3.23.0 中,CPack.distribution.dist.in 範本檔案中使用的 CPACK_PACKAGEMAKER_CHOICES 變數已被新的 CPACK_APPLE_PKG_INSTALLER_CONTENT 變數取代。這破壞了那些提供自己範本檔案但仍期望定義 CPACK_PACKAGEMAKER_CHOICES 變數的專案。舊的 CPACK_PACKAGEMAKER_CHOICES 變數現在也設定為與之前相同的內容,但它已被正式棄用。

3.23.3、3.23.4、3.23.5

  • 這些版本未對已記錄的功能或介面進行任何變更。進行了一些實作更新以支援生態系統變更和/或修復回歸。