cmake简介

什么是cmake

我们或许听说过好几种不同的make工具, 例如GNU Make, Qt的qmake, 微软的MS nmake等. 这些工具遵循着不同的规范和标准, 所执行的Makefile也千差万别. 这样就带来了一个严峻的问题: 如果软件想跨平台, 必须要保证能够在不同的平台上编译. 而如果使用上面的make工具, 就得为每一种标准写一次Makefile, 这将是一件令人抓狂的工作.

cmake就是针对上面的问题所设计的工具: 它首先允许开发者编写一种平台无关的CMakeListst.txt文件(注意文件名的大小写)来定制整个编译流程, 然后再根据目标用户的平台进一步生成所需要的本地化Makefile和工程文件, 从而做到 Write once, run everywhere. 显然, cmake是一个比上述几种make工具更高级的编译配置工具(项目构建工具), 使用cmake可以避免手写Makefile的麻烦.

使用cmake构建项目的流程

在Linux平台下使用cmake生成Makefile并编译的流程如下:

  • 编写cmake配置文件CMakeLists.txt;
  • 使用cmake指令根据CMakeLists.txt文件生成Makefile;
  • 使用make指令进行编译构建.

cmake的特点

  • 开放源代码;
  • 跨平台(可以在不同的平台上运行, 可以生成不同平台上的Makefile);
  • 能够管理大型项目;
  • 简化编译构建过程;
  • 高效率;
  • 可扩展, 可以我cmake编写特定功能的模块, 扩展cmake功能.

以上是cmake的优点, 但是cmake也有一些问题:

  • cmake没有想象中的那么简单, 使用起来还是有一些难度的;
  • 编写CMakeLists.txt过程实际上是编程的过程, 使用cmake语言和语法.