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.19.5 (2021年2月15日 ) |
預覽版本 | 3.19.0-rc3 (2020年11月6日 ) |
源代码库 | |
操作系统 | 跨平台 |
类型 | 軟體開發工具 |
许可协议 | 3句版BSD許可證 |
网站 | cmake |
「CMake」這個名字是"Cross platform Make"的縮寫。雖然名字中含有"make",但是CMake和Unix上常見的「make」系統是分開的,而且更為高階。 它可與原生建置環境結合使用,例如:make、ninja、蘋果的Xcode與微軟的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
- 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
- The Visualization Toolkit
- VXL
- UFFS