CMake 3.10 發行說明

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

新功能

平台

  • 現在支援 flang Fortran 編譯器,編譯器 ID 為 Flang

  • 新增了 Midipix 的新最小平台檔案。

  • 新增了對 MSVC ARM64 架構的支援。Visual Studio 2017 Update 4 及更高版本提供 ARM64 工具鏈。

  • 改進了對 IAR ARM 編譯器的支援。

產生器

命令

  • cmake_host_system_information() 命令學會了更多索引鍵,以取得關於處理器功能和主機作業系統版本的資訊。

  • configure_file() 命令學會了支援縮排的 #  cmakedefine#  cmakedefine01。現在會理解並在輸出中保留 # 字元和 cmakedefine/cmakedefine01 字詞之間的空格和/或 Tab 字元。

  • execute_process() 命令新增了 RESULTS_VARIABLE 選項,以便在提供多個 COMMAND 引數時,從處理程序管道中的所有子處理程序收集結果清單。

  • 引入了 include_guard() 命令,以便防止多次包含 CMake 指令碼。該命令支援 DIRECTORYGLOBAL 選項,以調整對應的包含保護範圍。如果沒有提供任何選項,包含保護類似於基本的變數式檢查。

  • string() 命令學會了新的 PREPEND 子命令。

  • string(TIMESTAMP) 命令現在支援以 %A 表示完整的星期幾名稱,並以 %B 表示完整的月份名稱。

變數

屬性

模組

  • FindCurses 模組新增了 CURSES_NEED_WIDE 選項,以請求寬字元變體。

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

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

  • FindMPI 新增了許多新功能,包括

    • 已將特定語言的元件新增到模組中。

    • 現在支援更多 MPI 環境。

    • 改進了對 Fortran 的環境支援。

    • 使用者現在可以精細地控制 MPI 選擇流程,包括將自訂參數傳遞至 MPI 編譯器。

    • 現在會公開已實作的 MPI 標準版本。

    • 現在可以偵測到 MPI-2 C++ 繫結,如果需要也可以抑制。

    • 現在會偵測並驗證可用的 Fortran 繫結。

    • 可以要求各種 MPI-3 資訊,包括個別繫結的程式庫版本和 Fortran 功能。

    • 支援靜態連結的 MPI 實作。

  • 新增了 FindOpenACC 模組,用於偵測編譯器對 OpenACC 的支援。目前僅支援 PGI、GNU 和 Cray 編譯器。

  • FindOpenGL 模組在 Linux 上增加了對 GLVND 的支援。

  • FindOpenMP 模組增加了對特定語言元件的支援。

  • 新增了 FindPatch 模組,用於尋找 patch 命令列執行檔。

  • FindProtobuf 模組的 protobuf_generate_cpp() 命令新增了 DESCRIPTORS 選項,用於產生描述符檔案。

  • GoogleTest 模組新增了一個命令 gtest_discover_tests(),實作動態(建置時)測試探索。與來源程式碼解析方法不同,動態探索會在建置時執行測試(以「列出可用測試」模式),以探索測試。這對於標記測試的不尋常方法具有更強的穩健性,為參數化測試等進階功能提供了更好的支援,並且不需要重新執行 CMake 即可探索測試執行檔中新增或移除的測試。請注意,CMake 3.10.3 中進行了一項重大變更,以解決 TIMEOUT 關鍵字的含糊不清之處(請參閱 3.10.3)。

  • InstallRequiredSystemLibraries 模組增加了對安裝 Intel 編譯器執行階段的支援。

Autogen

CTest

  • 新增了 CTEST_LABELS_FOR_SUBPROJECTS CTest 模組變數和 CTest 腳本變數,用於指定應由 CDash 視為子專案的標籤清單。若要在 CTest 模組和 ctest 命令列 儀表板用戶端 模式(例如 ctest -S)中使用此值,請在 CTestConfig.cmake 組態檔中設定它。

CPack

其他

  • graphviz 輸出現在區分了不同的相依類型

已棄用和已移除的功能

  • 已取消使用 C++98 編譯器建置 CMake 本身的支援。CMake 現在使用 C++11 實作。

  • 已取消在 HP-UX 上建置 CMake 的支援,等待更好的 C++11 支援和 libuv 的移植。請參閱 CMake Issue 17137。對於 HP-UX 支援,請改用 CMake 3.9 或更低版本。

其他變更

  • 在 FreeBSD 上,名為 c++ 的 C++ 編譯器現在是首選的預設值。

更新

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

3.10.1

3.10.3

  • CMake 3.10.1 從