让make自动推导
GNU的make很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必要去在每一个.o
文件后都写上类似的命令,因为,我们的make会自动识别,并自己推导命令。
只要make看到一个 .o
文件,它就会自动的把 .c
文件加在依赖关系中,如果make找到一个whatever.o
,那么 whatever.c
就会是 whatever.o
的依赖文件。并且cc -c whatever.c
也会被推导出来,于是,我们的makefile再也不用写得这么复杂。我们的新makefile又出炉了。
- objects = main.o kbd.o command.o display.o \
- insert.o search.o files.o utils.o
- edit : $(objects)
- cc -o edit $(objects)
- main.o : defs.h
- kbd.o : defs.h command.h
- command.o : defs.h command.h
- display.o : defs.h buffer.h
- insert.o : defs.h buffer.h
- search.o : defs.h buffer.h
- files.o : defs.h buffer.h command.h
- utils.o : defs.h
- .PHONY : clean
- clean :
- rm edit $(objects)
这种方法,也就是make的“隐晦规则”。上面文件内容中, .PHONY
表示 clean
是个伪目标文件。
关于更为详细的“隐晦规则”和“伪目标文件”,我会在后续给你一一道来。