CMake 3.7 發行說明

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

新功能

平台

  • CMake 現在支援使用簡單的工具鏈檔案進行 Android 交叉編譯

  • Clang 編譯器現在在 AIX 上受到支援。

產生器

  • Ninja 產生器學會在使用具有必要功能的 ninja 工具時有條件地支援 Fortran。詳細資訊請參閱產生器文件。

  • Ninja 產生器學會產生 sub/dir/{test,install,package} 形式的虛擬目標,以驅動子目錄安裝、測試或封裝目標的建置。這相當於使用 Makefile 產生器cd sub/dir; make {test,install,package}

  • 新增了 Visual Studio 15 2017 產生器。這是實驗性的,基於「Visual Studio 2017 RC」,因為這個版本的 VS 尚未發布。

  • 適用於 VS 2010 及更高版本的 Visual Studio 產生器 學會將 .natvis 原始檔正確地放入 VS 專案檔案中。

  • Xcode 產生器的基本 Swift 語言支援學會使用新的 CMAKE_Swift_LANGUAGE_VERSION 變數,以告知 Xcode 原始碼使用的 Swift 版本。

  • CodeLite 產生器新增了 CMAKE_CODELITE_USE_TARGETS 選項,以將專案建立從專案變更為目標。

命令

  • add_custom_command() 命令新增了 DEPFILE 選項,該選項與 Ninja 產生器搭配使用,以將隱式相依性資訊提供給建置工具。

  • cmake_parse_arguments() 命令新增了 PARSE_ARGV 模式,以直接從 function() 主體內的 ARGCARGV# 變數讀取引數。

  • export() 命令新增了 ANDROID_MK 選項,以產生 Android.mk 檔案,將 CMake 建置的程式庫作為預建程式庫引用到 Android NDK 建置系統中。

  • file(DOWNLOAD)file(UPLOAD) 命令新增了 HTTPHEADER <HTTP-header>USERPWD <username>:<password> 選項。

  • find_library()find_package() 命令學會在建置目標為 32 位元架構時搜尋 lib32/ 目錄。請參閱 FIND_LIBRARY_USE_LIB32_PATHS 全域屬性。

  • find_package() 命令可以透過設定兩個新變數 CMAKE_FIND_PACKAGE_SORT_ORDERCMAKE_FIND_PACKAGE_SORT_DIRECTION,依照 NAMENATURAL 排序相容的程式庫。

  • if() 命令新增了布林值比較運算子 LESS_EQUALGREATER_EQUALSTRLESS_EQUALSTRGREATER_EQUALVERSION_LESS_EQUALVERSION_GREATER_EQUAL

  • install() 命令新增了 EXPORT_ANDROID_MK 子命令,以安裝 Android.mk 檔案,將已安裝的程式庫作為預建程式庫引用到 Android NDK 建置系統中。

  • string(TIMESTAMP)file(TIMESTAMP) 命令新增了對 %a%b 預留位置的支援。這些是縮寫的星期幾和月份名稱。

  • try_compile() 命令原始檔簽章現在會在產生的測試專案中使用組態特定的旗標 (例如 CMAKE_<LANG>_FLAGS_DEBUG)。先前僅使用了目前工具鏈的預設此類旗標。請參閱原則 CMP0066

變數

屬性

模組

  • 新增了 AndroidTestUtilities 模組,以管理測試資料傳輸到 Android 裝置。

  • CheckFortranSourceCompiles 模組巨集 CHECK_Fortran_SOURCE_COMPILES 獲得了一個 SRC_EXT 選項,以指定自訂的 Fortran 來源檔案擴展名。

  • ExternalProject 模組新增了 HTTP_USERNAMEHTTP_PASSWORD 選項,以設定 http 下載憑證。

  • ExternalProject 模組新增了一個 HTTP_HEADER 選項,以新增 http 下載標頭。

  • FindBISON 模組 BISON_TARGET 巨集學習了一個新的 REPORT_FILE 選項,以指定 bison --report-file= 選項。

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

  • 引入了 FindICU 模組,以尋找 Unicode (ICU) 函式庫和程式的國際組件。

  • FindMatlab 模組學會了尋找 SIMULINK 和 MAT 元件。

  • FindMatlab 模組 matlab_add_mex() 命令學會了新增可執行檔和模組。

  • FindMatlab 模組 matlab_add_unit_test() 命令學會了支援內嵌的 Matlab 測試程式碼。

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

  • FindOpenMP 模組學會了從編譯器偵測 OpenMP 版本 (規格日期)。

  • 新增了 FindVulkan 模組。

CTest

CPack

其他

  • cmake(1) 新增了 -E capabilities 選項,以提供 cmake 工具功能(可用的產生器等)的機器可讀(JSON)描述。

  • 新增了 cmake-server(7) 模式,透過 JSON 協定向客戶端提供有關 CMake 產生之建置系統的語義資訊。目前,所有協定均為實驗性質,可能會變更。

  • cmake(1) 命令新增了 --trace-source=<file> 選項。

  • ccmake(1) 學會支援類似 vim 的導覽綁定。

  • cmake-gui(1) 新增了一個按鈕,可為 Visual Studio 產生器Xcode 產生器開啟產生的專案檔案。

已棄用和移除的功能

  • 我們不再從 cmake.org 提供新版 CMake 的 Linux i386 二進制檔案下載。

  • Vim 支援檔案 cmake-indent.vimcmake-syntax.vimcmake-help.vim 已移除,改用 vim-cmake-syntax 專案現在提供的檔案。

  • 已停止支援使用某些編譯器建置 CMake 本身。

    • Visual Studio 7.1 和 2005 -- 已由 VS 2008 及更高版本取代

    • MinGW.org mingw32 -- 已由 MSYS2 mingw32 和 mingw64 取代

    CMake 仍然支援使用這些編譯器為其他專案產生建置系統。

其他變更

  • Fortran 相依性掃描器學會支援 Fortran 子模組 的語法。

  • 來自 vim-cmake-syntax 專案的 Vim 支援檔案 indent/cmake.vimsyntax/cmake.vim 現在隨 CMake 一起發布。