Makefile 匹配任何模式规则

Makefile 匹配任何模式规则,makefile,gnu-make,Makefile,Gnu Make,我正在使用GNU Make 3.81版本 从下面的示例中,我希望匹配任何必须打印的模式(%:)。而不是执行te%: 有人能解释一下,为什么目标“%”:”没有运行 这不是所有文件名都匹配吗 生成文件: all: test echo $@ %: echo 1: $@ te%: echo 2: $@ 输出: echo 2: test 2: test echo all all 对于如何使treats匹配任何模式规则,都有特殊的规则;看。您正在此处创建“非终端匹配任何内容规则

我正在使用GNU Make 3.81版本

从下面的示例中,我希望匹配任何必须打印的模式(%:)。而不是执行te%:

有人能解释一下,为什么目标“%”:”没有运行

这不是所有文件名都匹配吗

生成文件:

all: test
    echo $@
%: 
    echo 1: $@
te%:
    echo 2: $@
输出:

echo 2: test
2: test
echo all
all

对于如何使treats匹配任何模式规则,都有特殊的规则;看。您正在此处创建“非终端匹配任何内容规则”,其规则如下:

非终端匹配规则不能应用于指示特定数据类型的文件名。如果某个不匹配的任何隐式规则目标与某个文件名匹配,则该文件名指示特定类型的数据

在本例中,您有一个与文件名(
test
)匹配的非匹配任何内容隐式规则目标(
te%
),因此非终端匹配任何内容规则(
%:
)无法匹配它