从我能够找到的,Makefile目标中的通配符:先决条件行是一个模式规则,指出“对于每个目标X.o,如果存在名为X.c的文件(例如),请执行以下命令”
我似乎无法弄清楚为什么,在下面的Makefile中只执行了一个通配符参数 .
all : foo.o
%.o : %.c
echo first %.o : %.c
%.o : %.c
echo second %.o : %.c
foo.o: foo.c foo.h bar.h baz.h
当我全部运行时,我得到这个输出:
echo second %.o : %.c
second %.o : %.c
据我所知,两个通配符都应该显示,因为它们都匹配模式 . 谁能解释为什么他们不是?
1 回答
第二个
%.o: %.c
规则 overrides 第一个 . 这就是为什么不输出第一个规则的输出 .来自gnu-make manual: