CMake 3.24 發行說明

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

新功能

預設集

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

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

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

產生器

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

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

命令列

  • cmake(1) 新增了 --fresh 命令列選項,以便在設定建置樹時移除任何現有的 CMakeCache.txt 檔案和相關聯的 CMakeFiles/ 目錄,從而開始新的組態,如同建置樹是全新建立的一樣。

  • cmake(1) 新增了 --compile-no-warning-as-error 命令列選項,該選項會導致忽略 COMPILE_WARNING_AS_ERROR 目標屬性和 CMAKE_COMPILE_WARNING_AS_ERROR 變數的效果。

  • cmake(1) --trace=json-v1 追蹤格式新增了欄位 global_frameline_end

  • cmake(1) -E 命令 catenv 學會了尊重雙破折號 (--) 引數,該引數充當分隔符,指示選項的結束。任何後續引數都被視為運算元/位置引數,即使它們以破折號 - 字元開頭。

  • cmake(1) -E tar 命令新增了 --touch 選項,以保留目前的本機時間戳記,而不是從封存檔中提取檔案時間戳記。

編譯器

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

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

平台

  • 新增了專用的 ADSP 平台來取代現有的 Generic-ADSP 實作。此平台具有自動偵測最新的 CCES/VDSP++ 安裝和編譯器選擇 (cc21kccblkfn),這基於 CMAKE_SYSTEM_PROCESSOR 變數。

命令

變數

屬性

模組

產生器表達式

  • 新增了 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 Generator 獲得了一個新的變數 CPACK_WIX_ARCHITECTURE,以指定安裝程式架構,從而支援在 Windows for ARM 上執行的電腦。

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

已棄用和移除的功能

其他變更

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

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

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

  • try_compile() 命令的 whole-project 簽章現在會傳播平台變數。請參閱政策 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

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