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++ 編譯器,編譯器識別碼為 IBMClang

  • 現在支援 MCST LCC 編譯器,編譯器識別碼為 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

已棄用和移除的功能

其他變更

  • CUDA 目標現在可以同時啟用

  • CUDA 編譯器偵測現在

    • 如果無法計算所需的預設架構,會在所有情況下發出錯誤(請參閱

    • 在 Clang 上處理

    • 支援多個預設架構的理論情況,以及

    • 嘗試偵測無效的架構並發出錯誤。

  • define_property() 命令的 BRIEF_DOCSFULL_DOCS 參數現在是可選的。

  • ccmake(1) 現在可以在從原始碼建置 CMake 時在 Windows 上啟用。這項功能是實驗性的,因此未包含在官方發行版本中。

更新

自 CMake 3.23.0 以來所做的變更包括以下內容。

3.23.1

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

  • 在 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

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