CMake 3.31 發行說明

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

新功能

預設集

  • cmake-presets(7) 檔案現在可以在 JSON 物件內的任何層級使用鍵 $comment 來包含註解,以提供文件。

  • cmake-presets(7) 檔案現在可以在設定預設集中使用 graphviz 鍵來請求 graphviz 輸出。

產生器

命令列

編譯器

  • LFortran 編譯器現在透過 compiler id LFortran 支援。

命令

  • add_custom_command() 命令新增了 CODEGEN 選項,以將自訂命令的輸出標記為 codegen 目標的依賴項。請參閱政策 CMP0171

  • cmake_pkg_config() 命令已新增為使用 CMake 原生 pkg-config 格式解析器的端點。此版本中唯一支援的選項是 EXTRACT,它提供對解析 pkg-config 檔案產生的值的低階存取。對於大多數使用者而言,這還不是 FindPkgConfig 模組的合適替代品。

  • file(ARCHIVE_CREATE) 命令新增了 WORKING_DIRECTORY 選項,以指定歸檔程序的工作目錄。

  • file(MAKE_DIRECTORY) 命令新增了 RESULT 選項,以在結果變數中捕獲失敗。

  • install(FILES)install(DIRECTORY) 命令的 TYPE 引數新增了對 LIBEXEC 類型的支援。

變數

屬性

模組

CTest

CPack

已棄用和移除的功能

其他變更

  • 當連結行上的靜態函式庫被去重複時 (依據政策 CMP0156),現在所有平台上都會保留第一次出現的項目。請參閱政策 CMP0179

  • TEST_LAUNCHERCROSSCOMPILING_EMULATOR 目標屬性中的空列表元素現在會被保留,藉由

    請參閱政策 CMP0178

  • execute_process() 命令的 ENCODING 選項,在 Windows 上有意義,現在預設為 UTF-8。請參閱政策 CMP0176

  • file(DOWNLOAD)file(UPLOAD) 命令現在預設會驗證與 https:// URL 連接的 TLS 伺服器憑證。詳情請參閱 CMAKE_TLS_VERIFY 變數。此變更在沒有政策的情況下進行,以便即使在構建未更新的專案時,使用者也能受到保護。使用者可以將 CMAKE_TLS_VERIFY 環境變數設定為 0 以恢復舊的預設行為。

  • file(DOWNLOAD)file(UPLOAD) 命令現在預設需要 TLS 1.2 或更高版本才能連接到 https:// URL。詳情請參閱 CMAKE_TLS_VERSION 變數。

  • file(GET_RUNTIME_DEPENDENCIES) 命令已更新,以更緊密地匹配 Linux 上動態載入器的行為。

  • install() 命令的 DESTINATION 參數現在已 正規化,但 install(TARGETS) 中的 INCLUDES DESTINATION 參數除外。請參閱政策 CMP0177

  • project() 命令現在始終將 <PROJECT-NAME>_SOURCE_DIR<PROJECT-NAME>_BINARY_DIR<PROJECT-NAME>_IS_TOP_LEVEL 設定為一般變數和快取條目。請參閱政策 CMP0180

  • cmake_parse_arguments(PARSE_ARGV) 命令現在為單值關鍵字後的空字串定義一個變數。請參閱政策 CMP0174

更新

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

3.31.1、3.31.2、3.31.3、3.31.4、3.31.5、3.31.6

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