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

时间:2015-05-29 15:56:02

标签: c++ build makefile

以下示例代码段来自"使用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

1 个答案:

答案 0 :(得分:3)

您为prog目标提供了食谱。作者没有count_words目标。这就是区别。

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

@echo $^食谱中删除prog,然后重试。