前言
Makefile文件中的命令有一定规范,一旦该文件编写好以后在Linux命令行中执行一条make命令即可自动编译整个工程。不同厂家的make可能会稍有不同,并且语法上也有区别,不过基本思想都差不多,主要还是落在目标依赖上,最广泛使用的是GNUmake。
语法规则
目标 ... : 依赖 ...
命令1
命令2
. . .
单独文件
测试文件,内容如下
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("hello makefile\n");
return 0;
}
makfeile
# main.c
main:main.o # 目标文件:依赖文件 链接
gcc main.o -o main
main.o:main.S # 目标文件:依赖文件 汇编
gcc -c main.S -o main.o
main.S:main.i # 目标文件:依赖文件 编译
gcc -S main.i -o main.S
main.i:main.c # 目标文件:依赖文件 预处理
gcc -E main.c -o main.i
.PHONY:
clear:
rm main.i main.S main.o -rf
clearall:
rm main.i main.S main.o main -rf
多个文件
测试文件,内容如下
// mytool1.c
#include <stdio.h>
#include "tool1.h"
void mytool1()
{
printf("%s %s print\n\n",__FILE__,__FUNCTION__);
}
#include <stdio.h>
#include "tool2.h"
void mytool2()
{
printf("%s %s print\n\n",__FILE__,__FUNCTION__);
}
#include <stdio.h>
#include <stdlib.h>
#include "tool1.h"
#include "tool2.h"
int main()
{
mytool1();
mytool2();
exit(0);
}
# tool1.c tool1.h tool2.c tool2.h main.c
main:main.o tool1.o tool2.o # 目标文件:依赖文件
gcc main.o tool1.o tool2.o -o main
main.o:main.c # 目标文件:依赖文件
gcc main.c -c -o main.o
tool1.o:tool1.c # 目标文件:依赖文件
gcc tool1.c -c -o tool1.o
tool2.o:tool2.c # 目标文件:依赖文件
gcc tool2.c -c -o tool2.o
.PHONY:
clear:
rm main.o tool1.o tool2.o -r
clearall:
rm main.o tool1.o tool2.o main -r