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也支援靜態與動態程式庫的建構。

「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

 參見 

 Automake
 qmake
 xmake
 SCons

 外部連結 
 CMake home page
 Why the KDE project switched to CMake—and how
 CMake实践——  一个快捷入门在线教程

Category:自由软件
Category:編譯器軟件
Category:程序設計工具
Category:自动化构建