CMake1:概述
参考链接:
爱编程的大丙 | CMake教程
CMakeLists指令以及常用方法
一个C/C++代码项目的构建流程是:
- 源文件:包括.cpp、.c、.cc等后缀的C/C++源文件。
- 预处理器:处理所有#开头的预处理指令,展开#include头文件,替换宏定义,移除注释,处理条件编译,生成预处理后的源文件。
- 编译器:将预处理后的源代码转换为汇编语言代码(.s或.asm文件),期间进行语法检查、语义分析和代码优化,C语言用gcc,C++用g++等。
- 汇编器:将汇编代码转换为机器语言指令,生成目标文件(Windows下为.obj,Linux下为.o等),目标文件为二进制格式但不可直接执行。
- 链接器:将多个目标文件及所需库文件链接,解决符号引用,最终生成可执行文件(Windows下为.exe,Linux下通常无后缀等)。
CMake 是一个项目构建工具,并且是跨平台的。关于项目构建我们所熟知的还有Makefile(通过 make 命令进行项目的构建),大多是IDE软件都集成了make,比如:VS 的 nmake、linux 下的 GNU make、Qt 的 qmake等,如果自己动手写 makefile,会发现,makefile 通常依赖于当前的编译平台,而且编写 makefile 的工作量比较大,解决依赖关系时也容易出错。
而 CMake 恰好能解决上述问题, 其允许开发者指定整个工程的编译流程,在根据编译平台,自动生成本地化的Makefile和工程文件,最后用户只需make编译即可,所以可以把CMake看成一款自动生成 Makefile的工具,其流程图如下:
- 蓝色虚线表示使用makefile构建项目的过程
- 红色实线表示使用cmake构建项目的过程
CMake 允许开发者指定整个工程的编译流程,在根据编译平台,自动生成本地化的Makefile和工程文件,最后用户只需 make 编译即可,所以可以把 CMake 看成一款自动生成 Makefile 的工具。