cmake构建工具的简单介绍
我们建议初学者始终在一个IDE环境中进行C/C++的编程练习,这些IDE环境充当着构建工具的角色。以Qt Creator为例,其.pro项目文件存储了项目的全部配置信息,包括源代码文件、头文件、用户界面文件、数据文件、资源文件的组成和位置,文件之间的依赖关系和编译顺序,项目编译和调试的参数等信息。当用户试图构建一个应用程序时,IDE环境会调用gcc或者其它编译器及工具来完成相关任务,极大地简化了操作难度。
如果开发者期望项目可以在不同的平台上编译和构建,一个名为cmake的构建工具允许开发者编写一个平台无关的CMakeList.txt文件来定制应用的编译/构建过程。目标用户在获得项目的全部源代码后,可以执行cmake命令生成本地化的Makefile,然后再执行make命令完成构建过程。cmake及make工具并不简单,此处我们只能通过一个极简的示例帮助读者概要地了解相关过程。
演示环境: 树莓派4B卡片式计算机(gcc版本10.2.1,Linux内核版本5.15)
1. 文件准备
在/home/pi/C12_Build目录下准备4个文件。
其中,area.c文件内容如下:
1 |
|
compute.c文件内容如下:
1 |
|
compute.h文件内容如下:
1 |
|
CMakeLists.txt文件内容如下:
1 | cmake_minimum_required(VERSION 2.8) |
第1行:规定了最低的cmake工作版本为2.8;
第2行:指定项目名称为C2CppBuildExample;
第3行:添加可执行文件,文件名为CalcArea, 其由area.c以及compute.c两个源程序文件编译、链接而成。
2. cmake
如下图所示,在Linux终端中执行cmake . , 其中的.表示工作路径为当前路径。
执行结束后,可以看到目录内多了一个名为Makefile的文件,该文件可被make工具解释执行,依该文件规定的步骤进行编译,即可得到目标可执行文件。从上图可以看到,cmake对平台环境进行了检查,确认了c语言及c++语言编译器的适用性以及版本,然后创建了合适的构建步骤和参数。
3. make
然后执行make命令,从输出结果可见,make先是编译生成了area.c.o可重定位目标文件,然后编译生成了compute.c.o文件,接下来再进行了链接,生成可执行目标文件CalcArea。
./CalcArea的执行结果证实,构建出来的可执行目标文件工作正常。