匹配任何模式规则
Match-Anything Pattern Rules
我使用的是 GNU Make 3.81 版本。
从以下示例中,我希望匹配任何模式 (%:) 必须被打印。而不是 te%: 已执行。
谁能解释一下,为什么目标“%:”没有 运行?
这不是匹配所有文件名吗?
生成文件:
all: test
echo $@
%:
echo 1: $@
te%:
echo 2: $@
输出:
echo 2: test
2: test
echo all
all
对于 make 如何处理匹配任何模式规则,有一些特殊的规则;见documentation。您正在此处创建一个 "non-terminal match-anything rule",其规则是:
A non-terminal match-anything rule cannot apply to a file name that indicates a specific type of data. A file name indicates a specific type of data if some non-match-anything implicit rule target matches it.
在您的情况下,您有一个与文件名 (test
) 匹配的非匹配任何隐式规则目标 (te%
),因此有一个非终端匹配任何规则 (%:
) 无法匹配。
我使用的是 GNU Make 3.81 版本。
从以下示例中,我希望匹配任何模式 (%:) 必须被打印。而不是 te%: 已执行。
谁能解释一下,为什么目标“%:”没有 运行?
这不是匹配所有文件名吗?
生成文件:
all: test
echo $@
%:
echo 1: $@
te%:
echo 2: $@
输出:
echo 2: test
2: test
echo all
all
对于 make 如何处理匹配任何模式规则,有一些特殊的规则;见documentation。您正在此处创建一个 "non-terminal match-anything rule",其规则是:
A non-terminal match-anything rule cannot apply to a file name that indicates a specific type of data. A file name indicates a specific type of data if some non-match-anything implicit rule target matches it.
在您的情况下,您有一个与文件名 (test
) 匹配的非匹配任何隐式规则目标 (te%
),因此有一个非终端匹配任何规则 (%:
) 无法匹配。