CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。
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