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()
主體內的ARGC
和ARGV#
變數讀取引數。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_ORDER
和CMAKE_FIND_PACKAGE_SORT_DIRECTION
,依照NAME
或NATURAL
排序相容的程式庫。if()
命令新增了布林值比較運算子LESS_EQUAL
、GREATER_EQUAL
、STRLESS_EQUAL
、STRGREATER_EQUAL
、VERSION_LESS_EQUAL
和VERSION_GREATER_EQUAL
。install()
命令新增了EXPORT_ANDROID_MK
子命令,以安裝Android.mk
檔案,將已安裝的程式庫作為預建程式庫引用到 Android NDK 建置系統中。string(TIMESTAMP)
和file(TIMESTAMP)
命令新增了對%a
和%b
預留位置的支援。這些是縮寫的星期幾和月份名稱。try_compile()
命令原始檔簽章現在會在產生的測試專案中使用組態特定的旗標 (例如CMAKE_<LANG>_FLAGS_DEBUG
)。先前僅使用了目前工具鏈的預設此類旗標。請參閱原則CMP0066
。
變數¶
新增了變數
CMAKE_FIND_PACKAGE_SORT_ORDER
,以控制find_package()
命令的排序模式。新增了變數
CMAKE_FIND_PACKAGE_SORT_DIRECTION
,以控制find_package()
命令的排序方向。工具鏈 檔案
現在可以設定CMAKE_<LANG>_FLAGS_INIT
變數,以便在建置樹狀結構中首次啟用語言時初始化CMAKE_<LANG>_FLAGS
快取條目。工具鏈 檔案
現在可以設定CMAKE_EXE_LINKER_FLAGS_INIT
、CMAKE_SHARED_LINKER_FLAGS_INIT
和CMAKE_MODULE_LINKER_FLAGS_INIT
變數,以便在建置樹狀結構中首次啟用語言時初始化CMAKE_EXE_LINKER_FLAGS
、CMAKE_SHARED_LINKER_FLAGS
和CMAKE_MODULE_LINKER_FLAGS
快取條目。
屬性¶
在 Apple 平台上,
BUNDLE_EXTENSION
目標屬性現在也適用於框架和應用程式套件。新增了
BINARY_DIR
目錄屬性,以取得與讀取屬性的來源目錄相對應的二進位目錄的絕對路徑。新增了
BUILDSYSTEM_TARGETS
目錄屬性,以取得專案在目錄中新增的邏輯建置系統目標名稱清單。引入了
LINK_WHAT_YOU_USE
目標屬性和支援的CMAKE_LINK_WHAT_YOU_USE
變數,以偵測 (在 UNIX 上) 連結但執行ldd -r -u
時不需要的共享函式庫。新增了
SOURCE_DIR
目錄屬性,以取得與目錄關聯的來源目錄的絕對路徑。新增了
SUBDIRECTORIES
目錄屬性,以取得專案在目錄中新增的子目錄清單。新增了
VS_SDK_REFERENCES
目標屬性,以告知 Visual Studio 產生器 參考指定的 SDK。建立了一個
VS_TOOL_OVERRIDE
來源檔案屬性,以告知 Visual Studio 產生器 針對來源檔案使用哪個工具。現在,
WINDOWS_EXPORT_ALL_SYMBOLS
目標屬性適用於設定了ENABLE_EXPORTS
屬性的可執行目標。新增了
XCODE_FILE_ATTRIBUTES
來源檔案屬性,以告知Xcode
產生器在檔案的 Xcode 專案屬性中產生自訂內容。
模組¶
新增了
AndroidTestUtilities
模組,以管理測試資料傳輸到 Android 裝置。CheckFortranSourceCompiles
模組巨集CHECK_Fortran_SOURCE_COMPILES
獲得了一個SRC_EXT
選項,以指定自訂的 Fortran 來源檔案擴展名。ExternalProject
模組新增了HTTP_USERNAME
和HTTP_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¶
現在,
CPack WIX 產生器
支援CPACK_WIX_ROOT_FEATURE_TITLE
和CPACK_WIX_ROOT_FEATURE_DESCRIPTION
,允許為根功能元素指定自訂標題和描述。
其他¶
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.vim
、cmake-syntax.vim
和cmake-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.vim
和syntax/cmake.vim
現在隨 CMake 一起發布。