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 編譯器。它的 編譯器 IDCCur

  • 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> 佔位符中。