考虑这个简单的Makefile:
%.one: %.two
echo one
%.two: %.three
echo two
%.three: %.four
echo three
all: hi.one
正如预期的那样,make all
将产生:
echo three
three
echo two
two
echo one
one
但是如果我制作一个没有任何前缀/后缀的中间规则:
%.one: %
echo one
%: %.three
echo one
%.three: %.four
echo one
all: hi.one
Make会失败,说没有规则可以hi.one
。这是不可能的Make?
答案 0 :(得分:4)
不可能这样做,非终端匹配 - 任何规则都会被模式规则的依赖性忽略。
本手册中并未实际提及此内容,但make source(implicit.c:321)中的以下注释明确了
/* Rules that can match any filename and are not terminal
are ignored if we're recursing, so that they cannot be
intermediate files. */