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

C++ GNU会自动添加额外的先决条件吗?,c++,build,makefile,C++,Build,Makefile,下面的示例片段来自“使用GNU Make管理项目(第三版)”第21页 作者说,make将通过隐式规则自动将count\u words.o添加到先决条件列表中。引述: ,make标识了四个先决条件:count_words.o(该先决条件在makefile中丢失,但由隐式规则提供)、counter.o、lexer.o和-lfl 然而,我的测试与此不符。这是我的测试: prog: abc.o @echo $^ abc.o: @echo abc.o built. prog.o:

下面的示例片段来自“使用GNU Make管理项目(第三版)”第21页

作者说,
make
将通过隐式规则自动将
count\u 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建造

abc.o

make
没有为目标
prog
搜索
prog.o
。 有什么问题吗?我的考试有什么问题吗


顺便说一句,我的测试是在
Cygwin
上,使用
gnumake4.1
你给了你的
prog
目标一个配方。作者没有为
count_words
目标做任何准备。这就是区别

作者指望内置的
%:%.o
规则生效。你用你的规则推翻了这一点

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

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