CMake 3.13 發行說明

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

新功能

產生器

命令列

  • cmake(1) 命令獲得了 -S <source_dir> 命令列選項,以指定原始碼目錄的位置。此選項可以獨立於 -B 使用。

  • cmake(1) 命令獲得了 -B <build_dir> 命令列選項,以指定建置目錄的位置。此選項可以獨立於 -S 使用。

  • cmake(1) -E create_symlink 命令現在可以在 Windows 上使用。

命令

變數

屬性

模組

  • FindBoost 模組獲得了 Boost_ARCHITECTURE 選項,以指定 Boost 特定架構的程式庫檔案名稱片段。

  • FindCURL 模組學會分別尋找偵錯和發行變體。

  • FindMatlab 模組獲得了新的組件 ENGINE_LIBRARYDATAARRAY_LIBRARY,以請求分別尋找 Matlab C++ Engine 和 DataArray 程式庫。

  • FindMatlab 模組現在在 Visual Studio 中明確匯出 mexFunction。

  • FindMatlab 模組獲得了新的 MCC_COMPILER 組件,以請求尋找 Matlab Compiler 外掛程式。

  • FindPkgConfig 模組獲得了一個選項,以在全域範圍內建立匯入的目標。

  • FindPkgConfig 模組獲得了對 <> 運算符號的支援,用於版本檢查,除了已支援的運算符號 >=<== 之外。

  • 模組 FindPython3FindPython2FindPython 獲得了控制 macOS (Framework) 和 Windows (Registry) 上資源查找順序的功能。

  • FindSubversion 模組 Subversion_WC_INFO 命令獲得了 IGNORE_SVN_FAILURE 選項,以抑制失敗,例如當原始碼樹不在 Subversion 控制下時。

  • UseSWIG 模組學會管理 SWIG 編譯的目標屬性 INCLUDE_DIRECTORIES

CTest

  • ctest(1) 獲得了 --progress 選項,以在輸出到終端機時啟用即時測試進度摘要。

CPack

  • CPack DEB Generator 學會將偵錯符號分割到對應的 .ddeb 套件中,當設定 CPACK_DEBIAN_DEBUGINFO_PACKAGE 時。

  • CPack DEB Generator 學會在使用套件檔案時遵守 SOURCE_DATE_EPOCH 環境變數。這對於產生可重現的套件很有用。

  • CPack 獲得了新的 CPack External Generator,用於匯出其他軟體可以理解的格式的 CPack 元數據。此產生器的目的是允許外部封裝軟體在可能無法使用 CPack 進行整個封裝流程時,利用 CPack 的功能。

已棄用和移除的功能

  • 為政策 CMP0055CMP0063 新增了明確的棄用診斷 (CMP0054 及更低版本已棄用)。cmake-policies(7) 手冊說明,所有政策的 OLD 行為都已棄用,專案應移植到 NEW 行為。

其他變更

  • cmake.org 上提供的預編譯二進位檔案現在包含 qthelp 格式的文件。

  • option() 命令現在會遵守相同名稱的現有正常變數,並且不執行任何操作,而不是可能建立快取條目 (或設定其類型) 並移除正常變數。請參閱政策 CMP0077

  • Makefile 產生器 學會在 make clean 期間移除自訂命令和自訂目標副產品。

  • target_sources() 命令現在將相對原始碼檔案路徑解譯為相對於目前原始碼目錄。這簡化了從子目錄逐步建立目標的原始碼。新增了 CMP0076 政策,以提供與舊行為的向後相容性。

  • BundleUtilities 模組可能不再在配置時間包含。這始終是一個錯誤。請參閱政策 CMP0080

  • UseSWIG 模組已變更目標命名策略。請參閱政策 CMP0078

  • LINK_DIRECTORIES 目標屬性現在預期絕對路徑。請參閱政策 CMP0081

  • CPack 產生器已移至文件中的獨立章節中,而不是將文件放在其內部實作模組中。這些內部實作模組也不再適用於可能錯誤地包含它們的腳本,因為它們從一開始就不應該可用。

更新

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

3.13.2

  • CMake 3.13.0 包含一項變更,將編譯器隱含包含目錄傳遞給 AUTOMOCmoc 工具。由於使現有組建回歸,因此已還原此變更,並且在稍後版本中重新引入之前,需要進一步調查。

3.13.3

  • 已修復 Visual Studio 15 2017 產生器,以在安裝 VS 2019 時運作。

  • CMake 現在檢查在執行 CMake 時是否至少指定了原始碼或二進位目錄之一,如果兩者都遺失,則會發出錯誤。這一直是記錄在案的要求,但實作先前意外地接受了兩者都未指定的情況,只要給定一些其他引數,並以靜默方式使用目前工作目錄作為原始碼和建置樹。

3.13.4

  • 在 3.13.3 版本中,當未指定來源目錄或二進制目錄時所加入的錯誤,已降級為警告。雖然這從來不是預期的、有文件記錄的或支援的行為,但有些專案依賴於此。為了提供過渡期,此錯誤已降級為警告,適用於 3.13.x 發行系列的剩餘版本,但在後續版本中可能會再次成為致命錯誤。依賴舊行為的腳本可以通過顯式指定來源樹的路徑(即使只是 .`)來輕鬆修復,並繼續與所有 CMake 版本一起工作。

3.13.5

  • 在 CMake 3.13.0 到 3.13.4 版本中,呼叫 target_link_libraries() 以將 PRIVATE 依賴項新增到另一個目錄中建立的靜態庫(在 CMP0079 NEW 行為策略下)會不正確地將這些依賴項的使用需求傳播到連結該靜態庫的相依項。此問題已修正。