使用makefile编译多个文件(.c , .cpp , .h等)
有时候我们要一次运行多个文件,这时候我们可以使用Makefile!!!
◊make是什么?
make是一个命令工具,是一个解释makefile中指令的命令工具。它可以简化编译过程里面所下达的指令,当执行 make 时,make 会在当前的目录下搜寻 Makefile (or makefile) 这个文本文件,执行对应的操作。make 会自动的判别原始码是否经过变动了,而自动更新执行档。
◊为什么要使用make?
假设,现在一个项目里面包含了100个程序文件,如果要对这个项目进行编译,那么光是编译指令就有100条。如果要重新进行编译,那么就又得像之前一样重新来一遍。这样重复且繁琐的工作实在是让我们很不爽啊。所以,用make来进行操作,间接调用gcc岂不是很方便?如果我们更动过某些原始码档案,则 make 也可以主动的判断哪一个原始码与相关的目标文件档案有更新过, 并仅更新该档案。这样可以减少重新编译所需要的时间,也会更加方便。
◊makefile又是干什么的?
makefile其实就是一个文档,里面定义了一系列的规则指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,它记录了原始码如何编译的详细信息! makefile一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
先看一下makefile的规则:
目标(target):目标文件1 目标文件2
<Tab>gcc -o 欲建立的执行文件 目标文件1 目标文件2
先举一个运行多个c语言文件。
首先下面是一个完整的 c语言文件,实现了统计用户输入的字符串中大小写字母的个数
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
void test(){
char str[50]={0};
scanf("%s",str);
int m=0;
int n=0;
pid_t p=fork();
if(p<0){
printf("fork failed");
}
if(p == 0){
for(int i=0;i<sizeof(str);i++){
if( str[i]<='Z'&& str[i]>='A'){
m++;
}
}
printf("大写字母一共有");
printf("%d",m);
printf("个");
}
if(p>0){
for(int i=0;i<sizeof(str);i++){
if(str[i]>='a' && str[i]<='z'){
n++;
}
}
printf("小写字母一共有");
printf("%d",n);
printf("个");
}
}
int main()
{
test();
return 0;
}
此时我们可以把该文件拆成三份,一份是.h文件,用来放头文件等信息,另外两个是.c文件,一个用来放main方法,一个放声明的函数,如下三图
则在终端进行一下操作
成功运行多个文件
下面介绍运行cpp文件,大致步骤相同。
一个 cpp文件写成多份的形式
稍微注意的就是gcc 和g++的使用。