CMake系列EP01: 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与微软的Visual Studio。
CMake项目的始于1999年,当时开发公司Kitware被委托设计一套新的工具来简化研究人员的日常工作软件。目标很明确:提供一组工具,可以在不同平台上配置、构建、测试和部署项目。有关CMake项目中设计的精彩叙述,请访问 https://www.aosabook.org/en/cmake.html

CMake是一个构建生成器,提供了强大的领域特定语言(Domain Specific Language,DSL)来描述构建系统应该实现的功能。这是CMake的主要优势之一,它允许使用相同的CMake脚本集生成平台原生构建系统。CMake软件工具集,使开发人员可以完全控制给定项目的生命周期:

  • CMake是描述如何在所有主要硬件和操作系统上配置、构建和安装项目,无论是构建可执行文件、库,还是两者都要构建。
  • CTest定义测试、测试套件,并设置应该如何执行。
  • CPack为打包需求提供了DSL。
  • CDash(The CMake Dashboard)将项目的测试结果在面板中展示。

你可能感兴趣的:(C/C++,c++,软件构建)