cmake

cmake

CMake是一個跨平台的安裝(編譯)工具,可以用簡單的語句來描述所有平台的安裝(編譯過程)。他能夠輸出各種各樣的makefile或者project文件,能測試編譯器所支持的C++特性,類似UNIX下的automake。只是 CMake 的組態檔取名為 CMakeLists.txt。Cmake 並不直接建構出最終的軟體,而是產生標準的建構檔(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然後再依一般的建構方式使用。這使得熟悉某個集成開發環境(IDE)的開發者可以用標準的方式建構他的軟體,這種可以使用各平台的原生建構系統的能力是 CMake 和 SCons 等其他類似系統的區別之處。

定義


CMake 可以編譯源代碼、製作程序庫、產生適配器(wrapper)、還可以用任意的順序建構執行檔。CMake 支持 in-place 建構(二進檔和源代碼在同一個目錄樹中)和 out-of-place 建構(二進檔在別的目錄里),因此可以很容易從同一個源代碼目錄樹中建構出多個二進檔。CMake 也支持靜態與動態程式庫的建構。
“CMake”這個名字是“cross platform make”的縮寫。雖然名字中含有“make”,但是CMake和Unix上常見的“make”系統是分開的,而且更為高階。

歷史


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

應用軟體


Bullet Physics Engine
KDE (starting with version 4)
The Visualization Toolkit (VTK)
Insight Segmentation and Registration Toolkit (ITK)
ParaView
DevIL - Open Image Library
OpenSceneGraph
Scribus
Drishti
PvPGN
Chicken
ParadisEO
Quantum GIS
OPENCV
PCL
Fast Light Toolkit(FLTK)
MySql 5.58版本以後
Clion

安裝


下載cmake
Windows版本安裝直接運行EXE
LINUX版本的安裝:
安裝cmake
cmake-*.*.*tar.gz為下載下來的源碼包
tar xvf cmake-*.*.*.tar.gz
cd cmake-*.*.*
./bootstrap
make
make install
如果已經安裝了cmake,想要安裝新版本,則:
cd cmake-*.*.*
cmake .
make
make install