代码之家  ›  专栏  ›  技术社区  ›  Guasqueño

Makefile:如果$^获得所有先决条件,那么可以使用什么来获得所有目标

  •  0
  • Guasqueño  · 技术社区  · 7 年前

    这就是想法:

    $(filenameParam)_%.sfx : commun_prereq.per
         mycommand $< (all my $@)
    

    其中%可以是任何一个字母,有时是e,f,有时是e,s,有时是h,r,t,基本上是任何包含字母的文件。

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

    对于给定的规则调用,只有一个目标,该目标的名称放入 $@ 自动变量。当make试图构建目标时 foo_h.sfx 然后 foo_h.sfx foo_r.sfx 然后 foo\u r.sfx

    还有一个问题:在一个模式规则中可能有多个目标模式。这使得make在一次规则调用中构建所有这些目标。在这种情况下, $@ $* 这与模式相匹配。因此:

    %.x %.y :
            @echo '@ = $@ / * = $*'
    

    $ make foo.x
    @ = foo.x / * = foo
    
    $ make foo.y
    @ = foo.y / * = foo