通配符先决条件给出了奇怪的错误消息

时间:2013-11-08 11:04:19

标签: makefile

在这个例子中:

生成文件:

eat_pie: pie
    rm pie

eat_%: %
    rm $*

终端:

$ make eat_pie
make: *** No rule to make target `pie', needed by `eat_pie'.  Stop.

$ make eat_cake
make: *** No rule to make target `eat_cake'.  Stop.

为什么不让eat_cake输出目标蛋糕丢失?

GNU Make手册说明:

  

通过在目标和中自动生成通配符扩展   在先决条件。

1 个答案:

答案 0 :(得分:2)

很不清楚你在问什么。通配符替换在给定示例中起作用(除非将目标声明为虚假 - 通配符不会因虚假扩展)。你的问题是你的'eat_'规则取决于文件的存在。你没有'pie'或'cake'文件,并且不知道如何构建它们(因为没有规则可以这样做),这就是错误信息所说的。