使隐式规则无法在没有命令

时间:2015-12-16 14:52:42

标签: makefile

我有一个像这样的简单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。

1 个答案:

答案 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