CMake 3.27 版本發行說明

自 CMake 3.26 以來所做的變更包括下列項目。

新功能

偵錯器

預設集

產生器

語言

  • CXX 語言現在將原始檔副檔名 .ccm.cxxm.c++m 視為 C++。

基於檔案的 API

  • cmake-file-api(7) "codemodel" 版本 2 的 version 欄位已更新為 2.6。

  • cmake-file-api(7) "codemodel" 版本 2 "target" 物件在 "compileGroups" 物件中新增了 "frameworks" 欄位。

平台

  • 現在可以為 macOS 上的共享函式庫建立 Apple 基於文字的 Stub(即 .tbd 檔案)。請參閱 ENABLE_EXPORTS 屬性。

命令

變數

屬性

模組

  • FindCUDAToolkit 模組現在為 cudla 提供匯入的目標,並為 CUPTI 的 nvperfpcsampling 組件提供匯入的目標。

  • FindDoxygen 模組的 doxygen_add_docs() 命令新增了 CONFIG_FILE 選項,以指定自訂的 doxygen 組態檔。

  • FindOpenGL 模組新增了對組件 GLES2GLES3 的支援。

  • FindwxWidgets 模組現在提供匯入的目標。

產生器運算式

自動產生

CTest

CPack

已棄用和移除的功能

其他變更

  • cmake --build $dir --verbose 現在會列印用於執行組建的工作目錄和命令列。

  • ExternalProjectFetchContent 模組現在將相對 GIT_REPOSITORY 路徑解析為相對於父專案的遠端,而不是相對的本機檔案系統路徑。請參閱 CMP0150

  • 當啟用 UPDATE_DISCONNECTED 選項時,ExternalProject configure 步驟不再在每次組建時重新執行。只有在 downloadupdatepatch 步驟的詳細資訊變更時,才會重新執行。

  • 現在,即使啟用 UPDATE_DISCONNECTED 選項,如果 ExternalProject updatepatch 步驟的任何詳細資訊變更,它們都會始終重新執行。如果使用 GIT 下載方法,且 GIT_TAG 變更為本機上尚不知道的 Commit,則現在會發出錯誤,而不是靜默地使用先前的 GIT_TAG

  • FindPythonFindPython2FindPython3 模組現在支援 Windows ARM64 平台。

  • file(GET_RUNTIME_DEPENDENCIES) 命令現在會保留 Windows 上報告的 DLL 名稱的大小寫。它們仍然會轉換為小寫以進行篩選比對。

  • 現在 Apple Frameworks 會遵循 SYSTEM 目標屬性。

  • 適用於 VS 15.8 (2017) 及更新版本的 Visual Studio 產生器 現在會並行組建自訂命令。請參閱政策 CMP0147

  • Visual Studio 產生器 用於 VS 14 (2015) 及更高版本現在更傾向於選擇最新的 Windows SDK 版本。請參閱政策 CMP0149

更新

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

3.27.1

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

3.27.2

  • Visual Studio 產生器 用於 VS 14 (2015) 及更高版本現在更傾向於選擇最新的 Windows SDK,如政策 CMP0149 所記錄,當目標為任何 Windows 版本時。在 CMake 3.27.[0-1] 中,此偏好設定僅限於以 Windows 10 及更高版本為目標。

  • Visual Studio 產生器 用於 VS 14 (2015) 及更高版本現在支援在 CMAKE_GENERATOR_PLATFORM 變數中使用 version=8.1 來選擇 Windows 8.1 SDK。在 CMake 3.27.[0-1] 中,version= 欄位僅限於選擇 Windows 10 SDK。

3.27.3, 3.27.4, 3.27.5, 3.27.6, 3.27.7, 3.27.8

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

3.27.9

  • The cmake-file-api(7) "codemodel" 版本 2 "target" 物件 fileSets 欄位由 CMake 3.26.0 引入,其 baseDirectories 成員的條目被錯誤地表示為絕對路徑,即使它們位於頂層原始碼目錄中。這已在 CMake 3.26.6 中修復,現在已在 3.27.9 中修復。用戶端必須更新以預期頂層原始碼目錄下的相對路徑。

  • CMake 3.27.0 更新了 Ninja 產生器 中的 Fortran 模組依賴掃描,以使用精確的校對依賴。這本應修復在目標之間移動模組原始碼時發生的細微重建失敗。自那時以來,已發現多個案例,在使用 物件程式庫 時,精確的校對依賴項被錯誤地計算。其中一些案例已通過 3.27.x 修補程式系列逐步修復,但此後又發現了其他更細微的案例。為了避免 3.27 版本系列中進一步的變動,原始變更已被還原並延遲到未來版本的 CMake。