前面提到了 gcc 编译器,那么使用 gcc 编译器肯定就会接触到 Makefile 。当源码文件比较多的时候就不适合通过直接输入 gcc 命令来编译,这时候就需要一个自动化的编译工具 make 。
举例:通过键盘输入两个整形数字,然后计算他们的和并将结果显示在屏幕上,在这个工程中我们有 main.c、input.c 和 calcu.c 这三个 C 文件和 input.h、calcu.h 这两个头文件,其中 main.c 是主体,input.c 负责接收从键盘输入的数值,calcu.h 进行任意两个数相加。
编辑 main.c ;
#include <stdio.h>
#include "input.h"
#include "calcu.h"
int main(int argc, char *argv[])
{
int a, b, num;
input_int(&a, &b);
num = calcu(a, b);
printf("%d + %d = %d\r\n",a, b, num);
return 0;
}
编辑 input.c ;
#include <stdio.h>
#include "input.h"
void input_int(int *a, int *b)
{
printf("input two num :");
scanf("%d %d",a, b);
printf("\r\n");
}
编辑 calcu.c ;
#include "calcu.h"
int calcu(int a, int b)
{
return a + b;
}
编辑 input.h ;
#ifndef _INPUT_H
#define _INPUT_H
void input_int(int *a, int *b);
#endif
编辑 calcu.h ;
#ifndef _CALCU_H
#define _CALCU_H
int calcu(int a, int b);
#endif
运行一下程序看看;
可以看出,我们的代码已经执行出了我们需要的结果,使用命令
gcc main.c input.c calcu.c -o main
看起来很简单,只需要一行就可以完成编译,但是我们这个工程只有三个文件啊!如果是几千个、几万个文件呢?再就是如果只有一个文件被修改了,使用上面的命令编译的时候,所有的文件都会
重新编译,就会花费太多时间,这显然不现实。这个时候 make 工具和 Makefile 文件的价值就体现出来了。