我们建议初学者始终在一个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文件内容如下:
#include <stdio.h>
#include "compute.h"
int main(){
float r = 4.1f;
float a = circleArea(r); //comment
printf("Area of the circle = %f.\n",a);
}
compute.c文件内容如下:
#include "compute.h"
#include "compute.h"
float circleArea(const float r){
float t = PI * SQUARE(r); //comment
return t;
}
compute.h文件内容如下:
#ifndef _COMPUTE_H
#define _COMPUTE_H
#define PI 3.1415926 //comment
#define SQUARE(x) x*x
float circleArea(const float r);
#endif
CMakeLists.txt文件内容如下:
cmake_minimum_required(VERSION 2.8)
project (C2CppBuildExample)
add_executable(CalcArea area.c compute.c)
第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的执行结果证实,构建出来的可执行目标文件工作正常。
本案例节选自作者编写的教材及配套实验指导书。
《C++编程基础及应用》(高等教育出版社,出版过程中)
《Python编程基础及应用》,高等教育出版社
《Python编程基础及应用实验教程》,高等教育出版社
高校教师同行如果期望索取样书,教学支持资料,加群,请私信作者,联系时请提供学校及个人姓名为盼,各高校在读学生勿扰为谢。
青少年读者们如果期望系统性地学习Python及C/C++程序设计语言,欢迎尝试下述今日头条(西瓜)免费视频课程。