这是make文件的片段:
main.o :
%.o: main.c strlen.h main.h common.h
@echo $^
我的问题是,由于main.o有一个空的先决条件和配方,那么为什么模式规则列出了main.o的依赖?输出显示如下:
main.o : main.c strlen.h main.h common.h
请解释任何身体帮助表示赞赏!!!!!!!
答案 0 :(得分:3)
没有配方的规则只是将任何提供的先决条件添加到给定目标。换句话说,只有一个规则可以包含给定目标的配方,但是可以有多个规则没有相同目标的配方。
此:
foo.o: foo.h
foo.o: bar.h
foo.o:
foo.o: biz.h
foo.o: foo.c
$(CC) -c -o $@ $<
从make的角度来看,是相同的:
foo.o: foo.c foo.h bar.h biz.h
$(CC) -c -o $@ $<