CMake
CMake是個一個開源的跨平台自動化建構系統,用來管理軟件建置的程式,並不依賴於某特定編譯器,並可支援多層目錄、多個應用程式與多個函式庫。 它用組態檔控制建構過程(build process)的方式和Unix的make相似,只是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也支援靜態與動態程式庫的建構。
開發者 | Andy Cedilnik, Bill Hoffman, Brad King, Ken Martin, Alexander Neundorf |
---|---|
目前版本 | 3.25.1(2022年11月30日 | )
預覽版本 | 3.25.0-rc4(2022年11月8日 | )
原始碼庫 | |
作業系統 | 跨平台 |
類型 | 軟件開發工具 |
特許條款 | 3句版BSD特許條款 |
網站 | cmake |
「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++、Fortran、Java的自動相依性分析功能。
- 經由CMake手稿語言支援SWIG、Qt、FLTK。
- 內建對微軟Visual Studio .NET和過去的Visual Studio版本的支援,可以產生.dsp、.sln和.vcproj檔。
- 用傳統的時間標籤偵測檔案內容的改變。
- 支援分散式建構(在多台電腦上同時建構)
- 在許多作業系統上進行跨平台編譯,包括 Linux、與POSIX相容的系統(AIX、*BSD系統、HP-UX、IRIX、MinGW/MSYS、Solaris)、Mac OS X和微軟Windows 95/98/NT/2000/XP等。
- 產生可以給Graphviz用的全域相依圖。
- 已經和Dart、CTest和CPack等軟件測試和釋出的工具整合。
使用CMake的應用軟件
- Allegro library
- Armadillo - linear algebra library
- Avidemux
- Awesome
- Blender 3D
- Boost C++ Libraries
- Bullet物理引擎
- Chicken
- Chipmunk physics engine
- clang
- Conky
- Doomsday Engine
- Drishti
- Fennel(頁面存檔備份,存於互聯網檔案館)
- Gammu
- GDCM
- Gmsh
- Hedgewars
- Hypertable
- hugin
- IGSTK
- Insight Segmentation and Registration Toolkit
- Jetbrains Clion
- KDE Software Compilation 4
- Kicad
- LMMS
- LLVM
- MiKTeX
- MuseScore
- MySQL(on Windows only)
- OGRE
- OpenSceneGraph
- OpenCV
- OpenFLUID
- ParaView
- Poppler
- PvPGN
- Quantum GIS
- Raw Therapee
- Rem
- Scribus
- SuperTux
- Slicer
- Stellarium
- Visual Studio
- The Visualization Toolkit
- VXL
- UFFS
- Xcode