GNU Make 会自动添加额外的先决条件吗?

Would GNU Make automatically add extra prerequisite?

以下示例片段来自 "Managing Projects with GNU Make(3rd edition)" 第 21 页。

count_words: counter.o lexer.o -lfl

作者说 make 会通过隐式规则自动将 count_words.o 添加到先决条件列表中。引用:

..., make identifies four prerequisites: count_words.o (this prerequisite is missing from the makefile, but is provided by the implicit rule), counter.o, lexer.o, and -lfl.

但是,我的测试不符合那个。这是我的测试:

prog: abc.o
    @echo $^
abc.o:
    @echo abc.o built.
prog.o:
    @echo prog.o bulit.

运行make后的输出为:

abc.o built.

abc.o

make 没有为目标 prog 寻找 prog.o。 有什么问题?我的测试有问题吗?

顺便说一下,我的测试是 CygwinGNU Make 4.1

您为 prog 目标提供了配方。作者没有针对 count_words 目标。这就是区别。

作者指望内置的 %: %.o 规则生效。你用你的规则覆盖了它。

prog 配方中删除 @echo $^,然后重试。