CMake 3.4 發行說明

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

新功能

產生器

  • Visual Studio 14 2015 產生器學習根據 CMAKE_SYSTEM_VERSION 變數的值和主機上可用的 SDK 來選擇 Windows 10 SDK。

  • CMake 學習了對 Apple Swift 語言的基本支援。當使用 Xcode 產生器搭配 Xcode 6.1 或更高版本時,可以使用 enable_language() 命令或 project() 命令來啟用 Swift 語言(對於其他產生器或當 Xcode 版本太舊時,這會發生錯誤)。然後可以在目標中列出 .swift 原始檔以進行編譯。

命令

變數

屬性

模組

  • ExternalProject 模組 ExternalProject_Add() 函數 GIT_SUBMODULES 選項現在也限制了初始化的子模組集合,以及限制更新的子模組集合的先前行為。

  • ExternalProject 模組學習了新的 USES_TERMINAL 引數,用於為步驟提供獨佔終端機存取權。這對於 Ninja 產生器監視 CMake 超級建置進度和防止 CPU 過度訂閱非常有用。

  • FindBISON 模組 BISON_TARGET 巨集學習了一個新的 DEFINES_FILE 選項,用於指定要產生的自訂輸出標頭。

  • FindHDF5 模組學習了一個新的 HDF5_PREFER_PARALLEL 選項,允許使用者指定如果平行 HDF5 工具都可用,則優先選擇平行工具。

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

  • FindJava 模組學習可以選擇性地尋找 idljjarsigner 工具。

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

  • FindOpenSSL 模組學習了一個新的 OPENSSL_USE_STATIC_LIBS 選項,僅搜尋靜態程式庫。

  • FindPkgConfig 學習了一個新的 pkg_get_variable() 命令,可用於查詢套件中的任意變數(例如相關工具或資料和外掛程式安裝路徑)。

  • FindProtobuf 模組獲得了一個新的 protobuf_generate_python() 函數,用於從 .proto 檔案產生 python 原始碼。

  • FindTIFF 模組學習分別搜尋偵錯和發行變體。

  • FindwxWidgets 模組學習支援版本請求。

  • FindXercesC 模組學習分別搜尋偵錯和發行變體。

  • FindZLIB 模組學習分別搜尋偵錯和發行變體。

  • GNUInstallDirs 模組根據 GNU 編碼標準檔案系統階層標準,學習某些安裝前綴的特殊預設值。

  • UseJava 模組 add_jar 函數學習支援來源規格的回應檔案(例如 @srcs.txt)。

  • UseJava 模組 install_jar 函數學習了新的 DESTINATIONCOMPONENT 選項,以指定對應的 install() 命令選項。

  • UseJava 模組獲得了一個新的 create_javah 函數,用於從 Java 類別建立 C 標頭。

產生器表達式

CTest

  • CTest 學習可以選擇性地測量平行測試期間的 CPU 負載,並避免啟動可能導致負載超過給定閾值的測試。請參閱 ctest(1) 命令 --test-load 選項、CTest 測試步驟TestLoad 設定、CTEST_TEST_LOAD 變數,以及 ctest_test() 命令的 TEST_LOAD 選項。

  • ctest(1) 學習了 --test-output-size-passed--test-output-size-failed 選項,以自訂在作為 儀表板用戶端 執行時提交的測試輸出大小限制。

CPack

其他

  • 編譯功能 功能現在可以識別 Windows 上 GNU C 編譯器支援的功能。

  • CMake 學習使用 MSVC 工具來處理 *.manifest 原始檔。命名為 .exe.dll 目標原始檔的 Manifest 檔案將與連結器產生的 Manifest 合併,並嵌入到二進位檔中。

  • 現在支援 Concurrent Fortran 77 編譯器。它的 編譯器識別碼CCur

  • cmake(1) 獲得了一個新的 --trace-expand 命令列選項,它類似於 --trace,但在輸出中展開變數參考。

已棄用和移除的功能

其他變更

  • CheckFunctionExistsCheckLibraryExistsCheckSymbolExistsFindThreads 模組學習在僅啟用 CXX 的環境中工作。

  • CPack DEB 產生器 現在在套件總和檢查碼計算期間正確排除符號連結。

  • CPack DEB 產生器 不再使用 fakeroot 和系統 tar 程式進行封裝。

  • CPack 模組不再使用 CMake 特殊字元來損壞設定,當它們用作其他設定的預設值時。巨集 cpack_set_if_not_set 負責此操作,現在已被棄用。

  • 除非設定了 ENABLE_EXPORTS 目標屬性,否則 CMake 不再使用匯出符號的旗標連結可執行檔。請參閱政策 CMP0065

  • 不再為使用 add_library() 命令建立的 MODULE 程式庫設定 SONAME 欄位。MODULE 程式庫旨在用於執行時的明確動態載入。它們無法連結,因此 SONAME 沒有用處。

  • 內部 CMAKE_<LANG>_COMPILE_OBJECT 規則變數現在將編譯器包含旗標替換為單獨的 <INCLUDES> 佔位符,而不是主要的 <FLAGS> 佔位符。