CMake 3.12 發行說明

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

新功能

產生器

命令列

  • cmake(1) 建置專案cmake --build)新增了 --parallel [<jobs>]-j [<jobs>] 選項,以指定平行建置層級。它們會對應到原生建置工具的相應選項。

命令

變數

屬性

模組

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

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

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

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

  • FindMatlab 模組現在支援 Matlab Runtime Compiler (MCR),用於編譯和連結 matlab 擴充功能。

  • 新增了 FindODBC 模組,以尋找開放資料庫連接 (ODBC) 程式庫。

  • FindPkgConfig 模組已學會匯出找到的程式庫,並使用完整路徑,以便使用 target_link_libraries() 命令直接使用。

  • 新增了 FindPython3FindPython2 模組,以及一個新的 FindPython 模組,以提供一種新的方式來定位 Python 環境。

  • UseSWIG 模組進行了全面更新,現在更符合標準 CMake 命令來生成函式庫,並且可以通過屬性完全配置。

  • UseSWIG 模組學習了透過 UseSWIG_MODULE_VERSION 變數來管理多種行為,以確保舊版支援以及更穩健地處理 SWIG 的進階功能 (例如 %template)。

  • UseSWIG 模組學習了支援 CSHARP 變體封裝檔案。

  • WriteCompilerDetectionHeader 模組新增了一個 BARE_FEATURES 選項,為新語言功能的確切關鍵字新增一個相容性的定義。

產生器運算式

  • 新增了新的 $<GENEX_EVAL:...>$<TARGET_GENEX_EVAL:target,...> 產生器 運算式,以啟用對產生器運算式的取用,其評估結果本身就是產生器運算式。

  • 新增了一個新的 $<IN_LIST:...> 產生器 運算式

  • 新增了一個新的 $<TARGET_EXISTS:...> 產生器 運算式

  • 新增了一個新的 $<TARGET_NAME_IF_EXISTS:...> 產生器 運算式

CTest

  • ctest_start() 命令已被重新設計,因此您可以簡單地調用 ctest_start(APPEND),它將從 TAG 檔案讀取所有需要的資訊。參數解析也已放寬,因此參數的順序不再那麼重要。

  • 新增了一個 PROCESSOR_AFFINITY 測試屬性,以要求 CTest 在一組與其他同時運行的測試(設定了該屬性)不相交的處理器上執行測試時使用 CPU 親和性。

CPack

其他

  • 編譯 功能 功能現在支援 C++ 20。除了 cxx_std_20 元功能之外,尚未列舉任何特定功能。

  • 編譯 功能 功能現在知道自 VS 2010 以來 MSVC 中 C 功能的可用性。

  • 編譯 功能 功能現在知道 Texas Instruments C 編譯器支援的 C 語言標準。

已棄用和已移除的功能

  • Visual Studio 8 2005 產生器已被移除。

  • CMake 不再為函式庫目標產生 <tgt>_LIB_DEPENDS 快取條目。請參閱原則 CMP0073

其他變更

  • 標記為 SYSTEM 的目錄的包含標誌現在會移到非系統目錄之後。-isystem 標誌會自動執行此操作,因此將它們明確移至最後,可以使在沒有任何 -isystem 標誌的編譯器上行為保持一致。

  • Fortran 相依性掃描現在支援由 Fortran 子模組暗示的相依性。

  • 檔案 ${CMAKE_BINARY_DIR}/cmake_install.cmake 的存在和功能現在已記錄在 install() 文件中,以便外部封裝軟體可以利用 CPack 樣式的元件安裝。

  • CheckIncludeFile 模組的 check_include_file 巨集學習了遵守 CMAKE_REQUIRED_LIBRARIES 變數。請參閱原則 CMP0075

  • CheckIncludeFileCXX 模組的 check_include_file_cxx 巨集學習了遵守 CMAKE_REQUIRED_LIBRARIES 變數。請參閱原則 CMP0075