我有一个像这样的简单Makefile:
%.t1: %.t2
%.t2:
echo "t2"
当我输入时
make x.t2
它工作正常。但是当我打字的时候
make x.t1
我得到了
make: *** No rule to make target 'x.t1'. Stop.
如果我将%.t1目标修改为
%.t1: %.t2
echo
然后它有效。没有命令,为什么它不起作用?我在Fedora 23上使用GNU make 4.0。
答案 0 :(得分:1)
没有配方的模式规则不会添加规则,它会取消隐式规则。见http://www.gnu.org/software/make/manual/make.html#Canceling-Rules:
您可以通过定义具有相同目标和先决条件但没有配方的模式规则来取消内置隐式规则。例如,以下内容将取消运行汇编程序的规则:
%.o : %.s
可以添加一个分号来告诉make它有一个空配方:
%.t1: %.t2 ;
%.t2:
echo t2
哪个收益率:
$ make x.t1
t2