以下示例代码段来自"使用GNU Make管理项目(第3版)" p.21。
count_words: counter.o lexer.o -lfl
作者说make
会通过隐式规则自动将count_words.o
添加到先决条件列表中。引用:
...,make标识了四个先决条件:count_words.o(makefile中缺少此先决条件,但由隐式规则提供),counter.o,lexer.o和-lfl。
然而,我的测试并不符合这一点。这是我的测试:
prog: abc.o
@echo $^
abc.o:
@echo abc.o built.
prog.o:
@echo prog.o bulit.
运行make
后的输出是:
abc.o build。
abc.o
make
没有为目标prog.o
寻找prog
。
问题是什么?我的考试有问题吗?
顺便说一下,我的测试位于Cygwin
GNU Make 4.1
。
答案 0 :(得分:3)
您为prog
目标提供了食谱。作者没有count_words
目标。这就是区别。
作者指望内置的%: %.o
规则生效。你用你的规则超越了它。
从@echo $^
食谱中删除prog
,然后重试。