CMake 3.24 發行說明

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

新功能

預設值

  • cmake-presets(7) 檔案現在支援綱要版本 5

  • cmake-presets(7) 檔案現在支援 ${pathListSep} 巨集,它會根據平台展開為 :;

  • cmake-presets(7) 檔案在測試預設中增加了指定 testOutputTruncation 欄位的支援,該欄位指定達到最大測試輸出大小後使用的截斷模式。

產生器

  • 如果任何 CMake 檔案更新,Green Hills MULTI 產生器現在會產生建置規則來重新執行 CMake。

  • 當使用 VS 2019 Update 11 或更新版本時,Visual Studio 產生器現在支援 SYSTEM 標頭。

命令列

編譯器

  • 在某些平台上,現在支援 LLVM 的 flang Fortran 編譯器,其編譯器 ID 為 LLVMFlang

  • ADSP 編譯器支援(SHARC 和 Blackfin)現在涵蓋 CCES 和 VDSP++ 安裝,所需的組態現在在編譯器模組本身中完成,而不是在 Generic-ADSP 平台模組中完成。

平台

  • 新增了一個專用的 ADSP 平台來取代現有的 Generic-ADSP 實作。此功能會自動偵測最新的 CCES/VDSP++ 安裝和編譯器選擇 (cc21kccblkfn),這會根據 CMAKE_SYSTEM_PROCESSOR 變數進行。

指令

變數

  • 新增了

    新增了

  • 新增了

  • 新增了

  • 新增了

  • 新增了

  • 新增了

  • 新增了

  • 新增了

  • 引入了

  • 新增了 CMAKE_XCODE_XCCONFIG 變數以及對應的 XCODE_XCCONFIG 目標屬性,以告知 Xcode 產生器處理 xcconfig 檔案。

屬性

模組

產生器運算式

  • 新增了 LINK_LIBRARY 產生器運算式,以管理在連結步驟期間如何指定程式庫。CMAKE_<LANG>_LINK_LIBRARY_USING_<FEATURE>CMAKE_LINK_LIBRARY_USING_<FEATURE> 變數用於定義 LINK_LIBRARY 產生器運算式可使用的功能。此外,LINK_LIBRARY_OVERRIDELINK_LIBRARY_OVERRIDE_<LIBRARY> 目標屬性可用於解決不相容的功能。

    當以 Apple 平台為目標時,LINK_LIBRARY 產生器運算式可以透過各種方式連結框架。新增了以下功能

    • FRAMEWORK

    • NEEDED_FRAMEWORK

    • REEXPORT_FRAMEWORK

    • WEAK_FRAMEWORK

    當以 Apple 平台為目標時,LINK_LIBRARY 產生器運算式可以透過各種方式連結程式庫。新增了以下功能

    • NEEDED_LIBRARY

    • REEXPORT_LIBRARY

    • WEAK_LIBRARY

    LINK_LIBRARY 產生器表達式新增了 WHOLE_ARCHIVE 功能,可強制載入靜態程式庫中的所有成員。此功能在以下目標平台上受支援:

    • 所有 Apple 變體

    • Linux

    • 所有 BSD 變體

    • SunOS

    • Windows

    • CYGWIN

    • MSYS

  • 新增了 LINK_GROUP 產生器表達式,用於管理連結步驟中程式庫的分組。CMAKE_<LANG>_LINK_GROUP_USING_<FEATURE>CMAKE_LINK_GROUP_USING_<FEATURE> 變數用於定義可與 LINK_GROUP 產生器表達式一起使用的功能。此版本定義了 RESCAN 功能,該功能可用於在使用 Linux、BSD、SunOS 工具鏈和 Windows GNU 工具鏈時處理靜態程式庫之間的循環參考。

  • 新增了 PATH 產生器表達式,用於管理路徑。

  • 新增了 PATH_EQUAL 產生器表達式,用於管理路徑比較。

  • 新增了 TARGET_BUNDLE_DIR_NAME 產生器表達式,用於評估給定套件目標的套件目錄名稱。

CTest

CPack

  • CPack WIX 產生器 新增了一個新變數 CPACK_WIX_ARCHITECTURE,用於指定安裝程式的架構,以支援在 ARM 上執行 Windows 的電腦。

  • CPack 現在支援 CPACK_THREADS 選項,用於使用 libarchive 3.6 或更高版本編譯時的 zstd 壓縮。它受 cmake.org 上提供的官方 CMake 二進位檔案支援。

已棄用和移除的功能

其他變更

  • 在組建目錄中的第一次 CMake 執行期間啟用對應的語言時,CMake 不再設定像 CCCXX 等環境變數。請參閱原則 CMP0132

  • CheckIPOSupported 模組的 check_ipo_supported() 命令現在使用呼叫者的 CMAKE_<LANG>_FLAGSCMAKE_<LANG>_FLAGS_<CONFIG> 值。請參閱原則 CMP0138

  • 當未明確指定編譯器時,MSYS MakefilesMinGW Makefiles 產生器現在會選擇在 PATH 環境變數所列目錄中找到的第一個編譯器 (任何名稱)。

  • try_compile() 命令的 整個專案 簽名現在會傳播平台變數。請參閱原則 CMP0137

  • while() 命令現在會在條件評估期間診斷錯誤。請參閱原則 CMP0130

  • cmake.org 上提供的預編譯 macOS 二進位檔案不再將 SLA 附加到 .dmg 套件。這是因為 macOS 12 已棄用用於附加 .dmg 資源的工具。

  • cmake.org 上現在提供了預編譯的 Windows arm64 二進位檔案。

更新

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

3.24.1, 3.24.2

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

3.24.3

  • 在 3.24.0 中加入的 LLVMFlang Fortran 編譯器支援已擴展

    • 現在它支援 Fortran 與 C 或 CXX 之間的混合語言連結。

    • 現在它在 Windows 上支援 GNU ABI (MinGW),但尚未支援 MSVC ABI。

  • 進行了一些實作更新以支援生態系統的變更和/或修復回歸問題。

3.24.4

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