规则与空食谱和空的先决条件和模式规则

时间:2015-01-18 03:25:31

标签: makefile

这是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

请解释任何身体帮助表示赞赏!!!!!!!

1 个答案:

答案 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 $@ $<