CMake 3.13 發行說明

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

新功能

產生器 (Generators)

命令列

  • 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 產生器 學會在設定 CPACK_DEBIAN_DEBUGINFO_PACKAGE 時將偵錯符號分割到對應的 .ddeb 封裝中。

  • CPack DEB 產生器 學會在封裝檔案時遵循 SOURCE_DATE_EPOCH 環境變數。這對於產生可重製的封裝很有用。

  • CPack 新增了 CPack 外部 產生器,用於以其他軟體可以理解的格式匯出 CPack 中繼資料。此產生器的目的是允許外部封裝軟體在不可能將 CPack 用於整個封裝過程時利用 CPack 的功能。

已棄用和移除的功能

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

其他變更

  • 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 行為下),會不正確地將這些依賴項的使用要求傳播到連結靜態程式庫的相依項。此問題已修正。