【问题标题】:Match-Anything Pattern Rules匹配任何模式规则
【发布时间】:2015-03-11 11:59:37
【问题描述】:

我使用的是 GNU Make 3.81 版本。

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

谁能解释一下,为什么目标 '%:' 没有运行?

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

生成文件:

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

输出:

echo 2: test
2: test
echo all
all

【问题讨论】:

    标签: makefile gnu-make


    【解决方案1】:

    对于 make 如何处理 match-anything 模式规则有一些特殊的规则;见documentation。您在这里创建了一个“非终端匹配任何规则”,其规则是这样的:

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

    在您的情况下,您有一个与文件名 (test) 匹配的非匹配任何隐式规则目标 (te%),因此非终端匹配任何规则 (%:) 无法匹配它.

    【讨论】:

      猜你喜欢
      • 2012-07-17
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多