CMake 3.30 發行說明

自 CMake 3.29 以來的變更包括以下內容。

新功能

預設值

  • cmake-presets(7) 檔案現在支援綱要版本 9include 欄位現在會展開除了 $env{} 和特定於預設值的巨集,也就是那些衍生自預設值定義內欄位的巨集之外的所有巨集。

基於檔案的 API

  • cmake-file-api(7) "cmakeFiles" 版本 1 物件的 version 欄位已更新為 1.1。它獲得了一個 globsDependent 欄位來報告使用 CONFIGURE_DEPENDSfile(GLOB) 呼叫。

產生器

  • Visual Studio 產生器 現在會將 UseDebugLibraries 指示符新增至 .vcxproj 檔案,以表示哪些組態是偵錯組態。請參閱政策 CMP0162

語言

  • 編譯功能 功能現在實作了對 cxx_std_26cuda_std_26 元功能的支援,以表示編譯器模式必須至少為 C++26。這些元功能最初由 CMake 3.25 文件記錄,但尚未完全實作。

命令

  • 在不支援共享程式庫的平台上,add_library() 命令現在會拒絕建立共享程式庫,而不是自動將它們轉換為靜態程式庫。請參閱政策 CMP0164

  • 如果 enable_language() 命令在第一次 project() 呼叫之前被呼叫,則該命令現在會失敗並顯示錯誤。請參閱政策 CMP0165

  • file(DOWNLOAD)file(UPLOAD) 命令獲得了 TLS_VERSION <min> 選項,以指定連線到 https:// URL 的最小 TLS 版本。

變數

屬性

模組

  • ExternalProject 模組的 ExternalProject_Add() 命令獲得了 TLS_VERSION <min> 選項,並支援 CMAKE_TLS_VERSION 變數和 CMAKE_TLS_VERSION 環境變數,以指定連線到 https:// URL 的最小 TLS 版本。

  • FindBacktrace 模組現在提供一個匯入的目標。

    • 新變數

      • Python_EXECUTABLE_DEBUG

      • Python_INTERPRETER

      • Python_DEBUG_POSTFIX

    • 新目標

      • Python::InterpreterDebug

      • Python::InterpreterMultiConfig

產生器運算式

CTest

CPack

  • 現在,project(<PROJECT-NAME>) 命令只有在調用 project() 時,如果 <PROJECT-NAME>_SOURCE_DIR<PROJECT-NAME>_BINARY_DIR<PROJECT-NAME>_IS_TOP_LEVEL 已被設定為快取變數或非快取變數時,才會將它們設定為普通變數。同名的快取條目仍會像之前一樣設定。此變更完善了 3.30.3 的行為變更,以恢復呼叫相同專案名稱的 project() 的巢狀目錄的行為,但此版本中的實作存在缺陷(此版本說明已追溯更新)。它可能會導致第一次執行和後續執行之間的行為有所不同。如果您的專案包含使用相同專案名稱的巢狀 project() 呼叫,並且您使用這些變數,請不要使用 CMake 3.30.4。

3.30.5