如何创建Makefile文件呢?为什么要使用Makefile?首先看一个例子:
vi max.c
int max(int a,int b)
{
if(a>=b)
{
return a;
}else
{
return b;
}
}
vi min.c
int min(int a,int b)
{
if(a<b){
return a;
}else{
return b;
}
}
vi max.h
int max (int a, int b);
vi min.h
int min(int a,int b);
vi main.c
#include <stdio.h>
#include "max.h"
#include "min.h"
int main(int argc, char* argv[])
{
int a = 5;
int b = 3;
int maxNum= max(a,b);
int minNum = min(a,b);
printf("the max value is %d\nthe min value is %d\n",maxNum,minNum);
return 0;
}
一般的编译过程,首先编译依赖库文件,然后编译main函数,例如:
编译max.c
gcc -c max.c -o max.o
编译min.c
gcc -c min.c -o min.o
编译main.c
gcc max.o min.o main.c -o main
执行main
./main
输出结果
the max value is 5
the min value is 3
如果main.c中依赖的函数过多或调用别人提供的o库文件,每次编译会非常麻烦。
所以我们引入makefile,
创建Makefile文件
vi Makefile
#this is make file
main.out:max.o min.o main.c -o main.out
gcc max.o min.o main.c #tab间隔
max.o:max.c
gcc -c max.c -o max.o
min.o:min.c
gcc -c min.c -o min.c
执行命令
make
输出
gcc -c max.c -o max.o
gcc -c min.c -o min.o
gcc max.o min.o main.c -o main.out
执行
./main.out
输出
the max value is 5
the min value is 3