代码之家  ›  专栏  ›  技术社区  ›  deitch

在没有行动的情况下,为什么不扩大依赖关系?

  •  0
  • deitch  · 技术社区  · 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-%
    

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

    提前感谢

    1 回复  |  直到 1 年前
        1
  •  1
  •   MadScientist    1 年前

    The documentation 非常清楚:

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

    %.o : %.s