Makefile(一)-----Makefile基本结构
Makefile的一般格式如下:
target ... : prerequisites ...
command
其中target为目标文件,可以是Objectfile或者可执行文件,还可以是一个label。prerequisite为生成target所需的文件。
command为make所执行的命令。
插入一段示例代码:
1 edit : main.o kbd.o command.o display.o \
2 insert.o search.o files.o utils.o
3 cc -o edit main.o kbd.o command.o display.o \
4 insert.o search.o files.o utils.o
5 main.o : main.c defs.h
6 cc -c main.c
7 kbd.o : kbd.c defs.h command.h
8 cc -c kbd.c
9 command.o : command.c defs.h command.h
10 cc -c command.c
11 display.o : display.c defs.h buffer.h
12 cc -c display.c
13 insert.o : insert.c defs.h buffer.h
14 cc -c insert.c
15 search.o : search.c defs.h buffer.h
16 cc -c search.c
17 files.o : files.c defs.h buffer.h command.h
18 cc -c files.c
19 utils.o : utils.c defs.h
20 cc -c utils.c
21 clean :
22 rm edit main.o kbd.o command.o display.o \
23 insert.o search.o files.o utils.o
其中反斜杠'\'是换行符的意思,我们可以把这个内容保存在文件为“Makefile”或“makefile”的文件中,然后在该目录下直接输入命令“make”就可以生成执行文件edit。如果要删除执行文件和所有的中间目标文件,那么,只要简单地执行一下“make clean”就可以了。
在这个makefile中,目标文件(target)包含:执行文件edit和中间目标文件(*.o),依赖文件(prerequisites)就是冒号后面的那些 .c 文件和 .h文件。每一个 .o 文件都有一组依赖文件,而这些 .o 文件又是执行文件 edit 的依赖文件。依赖关系的实质上就是说明了目标文件是由哪些文件生成的,换言之,目标文件是哪些文件更新的。