当没有采取任何行动时,为什么 make 不展开依赖关系?

问题描述 投票:0回答:1

我有以下简化的 Makefile:

foo-%: dep-%
        @echo in foo $*

bar-%: dep-%

dep-%:
        @echo in dep $*

make dep-aa
有效。有趣的是,虽然
make foo-aa
有效,但
make bar-aa
却不起作用,尽管它对
dep-%
具有相同的依赖性。这是为什么?您如何解决这个问题?

$ make dep-aa
in dep aa
$ make foo-aa
in dep aa
in foo aa
$ make bar-aa
make: *** No rule to make target `bar-aa'.  Stop.

显然上面的简单情况并没有增加太多,但是如果我有多个子目标,它将很有用,例如

foo-%: abc-% def-% xyz-%

我想我可以用静态目标以某种方式做到这一点,不确定,但我想了解为什么上面的方法不起作用。

提前致谢

makefile
1个回答
0
投票

文档非常清楚:

您可以通过定义具有相同目标和先决条件但没有配方的模式规则来取消内置隐式规则。例如,以下命令将取消运行汇编程序的规则:

%.o : %.s
© www.soinside.com 2019 - 2024. All rights reserved.