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语言和语法.