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 步驟的詳細資訊變更時才會重新執行。

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

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

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

  • SYSTEM 目標屬性現在適用於 Apple Frameworks。

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

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

更新

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

3.27.1

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

3.27.2

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

  • 適用於 VS 14 (2015) 及更高版本的Visual Studio 產生器現在支援在 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

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

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