CMake 4.0 發行說明

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

新功能

基於檔案的 API

命令列

命令

變數

屬性

模組

產生器運算式

  • $<PATH> 產生器運算式獲得了 NATIVE_PATH 操作,以將 CMake 路徑轉換為原生路徑。

CTest

  • Windows 上的 ctest --interactive-debug-mode 選項現在預設在測試程序中啟用 Windows 錯誤報告,允許它們建立除錯彈出視窗和核心傾印。這還原了先前由 CMake 3.11 移除的行為,在 libuv 的更新使其成為可能之後。

CPack

已棄用和移除的功能

其他變更

  • 在 macOS 上,使用 Ninja 產生器Makefile 產生器,當在 /usr/bin 中找到編譯器時,現在按原樣使用,不再映射到 Xcode 內部的相應編譯器。映射由 CMake 3.2 引入,以允許建置樹繼續使用其原始編譯器,即使 xcode-select 切換到不同的 Xcode 安裝也是如此。但是,沒有明確的 -isysroot 旗標,Xcode 內部的編譯器無法使用,因此不適合傳遞給任意第三方建置系統。此外,映射行為可能會覆蓋使用者指定的編譯器路徑。因此,此行為已還原。

  • 以 macOS 為目標的建置預設不再選擇任何 SDK 或將 -isysroot 旗標傳遞給編譯器。相反,編譯器預計會自行選擇預設的 macOS SDK。為了使用不這樣做的編譯器,使用者現在必須在配置他們的建置時指定 -DCMAKE_OSX_SYSROOT=macosx

  • 在 AIX 上,SHARED 程式庫目標現在預設產生共享程式庫封存檔。請參閱政策 CMP0182

  • 預設情況下,cmake --preset 命令不再輸出預設的 CMake 快取和環境變數摘要。該摘要現在僅在訊息日誌層級設定為 VERBOSEDEBUGTRACE 時顯示,可透過 cmake --log-level 選項或 CMAKE_MESSAGE_LOG_LEVEL 快取變數來設定。

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