CMake

跨平台,與編譯器無關的建構系統產生器

CMake是個一個开源跨平台自動化建構系統,用來管理軟體建置的程序,並不依賴於某特定編譯器,並可支援多層目錄、多個應用程式與多個函式庫。 它用組態檔控制建構過程(build process)的方式和Unixmake相似,只是CMake的組態檔取名為CMakeLists.txt。CMake並不直接建構出最終的軟體,而是產生標準的建構檔(如Unix的Makefile或Windows Visual C++的projects/workspaces),然後再依一般的建構方式使用。這使得熟悉某個整合開發環境(IDE)的開發者可以用標準的方式建構他的軟體,這種可以使用各平台的原生建構系統的能力是CMake和SCons等其他類似系統的區別之處。 CMake設定檔(CMakeLists.txt)可設定原始碼或目標程式庫的路徑、產生適配器(wrapper)、還可以用任意的順序建構執行檔。CMake支援in-place建構(二進檔和原始碼在同一個目錄樹中)和out-of-place建構(二進檔在別的目錄裡),因此可以很容易從同一個原始碼目錄樹中建構出多個二進檔。CMake也支援靜態與動態程式庫的建構。

CMake
開發者Andy Cedilnik, Bill Hoffman, Brad King, Ken Martin, Alexander Neundorf
当前版本3.25.1(2022年11月30日,​2年前​(2022-11-30
预览版本3.25.0-rc4(2022年11月8日,​2年前​(2022-11-08
源代码库 編輯維基數據鏈接
操作系统跨平台
类型軟體開發工具
许可协议3句版BSD許可證
网站cmake.org

「CMake」這個名字是「Cross platform Make」的縮寫。雖然名字中含有「make」,但是CMake和Unix上常見的make系統是分開的,而且更為高階。它可與原生建置環境結合使用,例如:make、ninja、蘋果公司Xcode微軟Microsoft Visual Studio

歷史

CMake是為了解決美國國家醫學圖書館出資的Visible Human Project專案下的Insight Segmentation and Registration Toolkit(ITK)軟體的跨平台建構的需求而創造出來的,其設計受到了Ken Martin開發的pcmaker所影響。pcmaker當初則是為了支援Visualization Toolkit(VTK)這個開放原始碼的三維圖形和視覺系統才出現的,今日VTK也採用了CMake。在設計CMake之時,Kitware公司的Bill Hoffman採用了pcmaker的一些重要想法,加上更多他自己的點子,想把GNU建構系統的一些功能整合進來。CMake最初的實作是在2000年中作的,在2001年初有了急速的進展,許多改良是來自其他把CMake整合到自己的系統中的開發者,比方說,採用CMake作為建構環境的VXL社群就貢獻了很多重要的功能,Brad King為了支援CABLE和GCC-XML這套自動包裝工具也加了幾項功能,通用電氣公司的研發部門則用在內部的測試系統DART,還有一些功能是為了讓VTK可以過渡到CMake和支援洛斯阿拉莫斯國家實驗室的Advanced Computing Lab的平行視覺系統ParaView而加的。

更多功能介紹

  • 組態檔是用一種建構軟體專用的特殊程式語言寫的CMake腳本。
  • 內建C語言C++FortranJava的自動相依性分析功能。
  • 經由CMake腳本語言支援SWIGQtFLTK
  • 內建對微軟Visual Studio .NET和過去的Visual Studio版本的支援,可以產生.dsp、.sln和.vcproj檔。
  • 用傳統的時間標籤偵測檔案內容的改變。
  • 支援分布式建構(在多台電腦上同時建構)
  • 在許多作業系統上進行跨平台編譯,包括 Linux、與POSIX相容的系統(AIX*BSD系統HP-UXIRIXMinGW/MSYSSolaris)、Mac OS X和微軟Windows 95/98/NT/2000/XP等。
  • 產生可以給Graphviz用的全局相依圖。
  • 已經和DartCTestCPack等軟體測試和釋出的工具整合。

使用CMake的應用軟體

參見

外部連結