匹配任何模式规则与依赖

时间:2015-04-01 02:50:17

标签: makefile gnu-make

文件名:Makefile.mk

%: foo
    @echo %: $@ with foo

foo:
    @echo foo

运行

$ make -f Makefile.mk test

输出:

foo
%: Makefile.mk with foo
%: test with foo

我在GNU Make 3.81版本中运行它。 我不明白,为什么还要打印文件名(%:Makefile.mk with foo )。 有人可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

这是因为how makefiles are remade。那就是说

  

有时makefile可以从其他文件重新制作

  

如果可以从其他文件重新制作makefile,您可能希望make获取要读取的makefile的最新版本

所以

  

在阅读所有makefile后,make会将每个作为目标目标并尝试更新它。

然后匹配您的匹配任何规则并触发您看到的方式。

如果向makefile添加一个显式的Makefile.mk: ;目标,它将覆盖match-anything目标并阻止它。