CMake 3.6 發行說明

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

新功能

產生器

  • Ninja 產生器學會產生 sub/dir/all 形式的虛擬目標,以驅動子目錄的建置。這相當於使用 Makefile 產生器 執行 cd sub/dir; make all

  • Ninja 產生器現在將系統標頭檔包含在建置依賴項中,以確保在系統套件更新時正確地重新建置。

  • Visual Studio 14 2015 產生器學會支援 Clang/C2 工具集,例如使用 -T v140_clang_3_7 選項。此功能為實驗性功能。

命令

變數

屬性

模組

  • CMakePushCheckState 模組現在會推送/彈出/重設 CheckTypeSize 中使用的變數 CMAKE_EXTRA_INCLUDE_FILES

  • ExternalProject 模組學會了 GIT_SHALLOW 1 選項,以執行 Git 儲存庫的淺層複製。

  • ExternalProject 模組學會以遞迴方式初始化 Git 子模組,以及在更新時初始化新的子模組。使用 GIT_SUBMODULES 選項來限制初始化和更新哪些子模組。

  • ExternalProject 模組學會了 DOWNLOAD_NO_EXTRACT 1 引數,以跳過解壓縮下載的檔案 (例如,用於自解壓縮 shell 安裝程式或 .msi 檔案)。

  • ExternalProject 模組現在在從 git 儲存庫擷取時使用 TLS_VERIFY

  • FindBLASFindLAPACK 模組學會支援 OpenBLAS

  • FindCUDA 模組學會尋找 cublas_device 程式庫。

  • FindGTest 模組 gtest_add_tests 函數現在會導致 CMake 在測試來源變更時自動重新執行,以便可以重新掃描它們。

  • FindLTTngUST 模組已引入,以尋找 LTTng-UST 程式庫。

  • FindPkgConfig 模組學會選擇性地為其找到的程式庫建立匯入的目標。

  • FindProtobuf 模組學會提供 Protobuf_VERSION 變數,並檢查 find_package() 呼叫中要求的版本號碼。

  • InstallRequiredSystemLibraries 模組學會了一個新的 CMAKE_INSTALL_UCRT_LIBRARIES 選項,以啟用使用 Visual Studio 2015 應用程式本機部署 Windows Universal CRT 程式庫。

平台

  • CYGWIN 現在支援 Clang 編譯器。

  • 新增了對 Bruce C 編譯器的支援,編譯器 ID 為 Bruce

CTest

CPack

其他

  • 編譯功能 功能現在知道 UNIX 平台上 Intel C++ 編譯器版本 12.1 到 16.0 支援的功能。

已棄用和移除的功能

  • CMakeForceCompiler 模組及其巨集現在已棄用。請參閱模組文件以取得說明。

  • find_library()find_path()find_file() 命令不再在非 Windows 平台上從 PATH 環境變數衍生的安裝前綴中搜尋。此行為在 CMake 3.3 中新增以支援 Windows 主機,但已證明在 UNIX 主機上存在問題。將一些 <prefix>/bin 目錄保留在 PATH 中僅用於其工具的使用者不一定希望搜尋任何支援的 <prefix>/lib 目錄。可以將 CMAKE_PREFIX_PATH 環境變數設定為要搜尋的前綴的 分號分隔列表

  • Visual Studio 7 .NET 2003 產生器現在已棄用,將在 CMake 的未來版本中移除。

  • Visual Studio 7 產生器 (適用於 VS .NET 2002) 已移除。自 CMake 3.3 以來,它已被棄用。

  • Visual Studio 6 產生器已移除。自 CMake 3.3 以來,它已被棄用。

其他變更

  • cmake.org 上提供的預編譯 OS X 二進位檔現在需要 OS X 10.7 或更新版本。

  • 在 Linux 和 FreeBSD 平台上,從原始碼建置 CMake 本身且不使用系統提供的 libcurl 時,如果系統上找到 OpenSSL,現在預設使用 OpenSSL。這為透過 https 支援網路通訊的命令啟用 SSL/TLS 支援,例如 file(DOWNLOAD)file(UPLOAD)ctest_submit()

  • cmake(1) --build 命令列工具現在會拒絕具有錯誤的多個 --target 選項,而不是靜默忽略除最後一個選項之外的所有選項。

  • AUTOMOC 現在會在不同目錄中的多個原始檔使用相同名稱的 #include <moc_foo.cpp> 時診斷名稱衝突 (因為產生的 moc_foo.cpp 檔案會衝突)。

  • FindBISON 模組 BISON_TARGET 巨集現在透過將 VERBATIM 選項傳遞給內部 add_custom_command() 呼叫來支援特殊字元。這可能會破壞手動新增逸出來解決錯誤的用戶端。

  • FindFLEX 模組 FLEX_TARGET 巨集現在透過將 VERBATIM 選項傳遞給內部 add_custom_command() 呼叫來支援特殊字元。這可能會破壞手動新增逸出來解決錯誤的用戶端。

  • 為求與其他 find 模組一致,FindProtobuf 模組的輸入和輸出變數已全部從 PROTOBUF_ 重新命名為 Protobuf_。如果提供了舊格式的輸入變數,仍將會採用,而舊格式的輸出變數則始終會提供。

  • CPack RPM Generator 現在支援每個組件 CPackRPM 特定變數中使用大寫組件名稱。例如,名為 foo 的組件現在預期組件特定變數為 CPACK_RPM_FOO_PACKAGE_NAME,而之前則預期為 CPACK_RPM_foo_PACKAGE_NAME。變數中大寫的組件名稱部分與其他 CPack 變數所使用的慣例相容。為了向後相容,舊格式的變數仍然有效,如果同時設定了兩個版本的變數,則優先使用舊格式,但未來建議使用的格式是在變數中使用大寫組件名稱。稍後版本中將新增至 CPackRPM 的新變數將僅支援大寫組件變數格式。

  • CPack NSIS 產生器的組態檔範本已修正,會為 CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL 選項所使用的解除安裝工具路徑加上引號。這樣可以避免依賴不安全的 Windows 功能來執行路徑中包含空格的解除安裝工具。