比如你有3个头文件a.h b.h c.h 和 3个源文件 main.c fun.c dun.c
main .c
#include “a.h”
fun.c
#include “a.h”
#include “b.h”
dun.c
#include “b.h”
#include “c.h”
如果修改了头文件c.h,源文件mian.c和fun.c不需要重新编译(不依赖 c.h),但必须重新编译dun.c;如果修改头文件b.h,又忘记编译源文件fun.c,则程序可能无法正常工作
为解决上述问题,就有了 make 工具,在必要时重新编译所有受到改动的源文件。make命令内置了很多的智能机制,但无法建立程序,所以必须提供一个makefile文件,告诉它应用程序如何构造。
makefile文件一般都和项目的其他源文件放在同一目录下。由一组依赖关系和规则构成,依赖关系由一个目标(即将要建的文件:单独的可执行文件)和该目标依赖的源文件组成,规则描述了如何通过依赖关系创建目标。
上例中依赖关系列表如下
myapp: main .0 fun.o dun.o
main.o: main.c a.h
fun.o: fun.c a.h b.h
dun.o dun.c b.h c.h
主要包括五方面内容: