在这个例子中:
生成文件:
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手册说明:
通过在目标和中自动生成通配符扩展 在先决条件。
答案 0 :(得分:2)
很不清楚你在问什么。通配符替换在给定示例中起作用(除非将目标声明为虚假 - 通配符不会因虚假扩展)。你的问题是你的'eat_'规则取决于文件的存在。你没有'pie'或'cake'文件,并且不知道如何构建它们(因为没有规则可以这样做),这就是错误信息所说的。