Makefile有很多灵活的写法,可以写得更简洁,同时减少出错的可能。本节我们来看看这样一个例子还有哪些改进的余地。
一个目标依赖的所有条件不一定非得写在一条规则中,也可以拆开写,例如:
main.o: main.h stack.h maze.h
main.o: main.c
gcc-c main.c
就相当于:
main.o: main.c main.h stack.h maze.h
gcc-c main.c
如果一个目标拆开写多条规则,其中只有一条规则允许有命令列表,其它规则应该没有命令列表,否则make会报警告并且采用最后一条规则的命令列表。
这样我们的例子可以改写成:
main: main.o stack.o maze.o
gccmain.o stack.o maze.o -o main
main.o: main.h stack.h maze.h
stack.o: stack.h main.h
maze.o: maze.h main.h
main.o: main.c
gcc-c main.c
stack.o: stack.c
gcc-c stack.c
maze.o: maze.c
gcc-c maze.c
clean:
-rmmain *.o
.PHONY: clean
这不是比原来更繁琐了吗?现在可以把提出来的