这是个主意:
$(filenameParam)_%.sfx : commun_prereq.per
mycommand $< (all my $@)
其中%可以是任何一个字母,有时是e,f有时是e,s,有时是h,r,t,基本上是任何带有字母的文件。
答案 0 :(得分:0)
对于给定的规则调用,只有一个目标,并且该目标的名称被放入$@
自动变量中。当make尝试构建目标foo_h.sfx
时,$@
将为foo_h.sfx
;当make尝试构建目标foo_r.sfx
时,$@
将为foo_r.sfx
等。
还有一个额外的问题:模式规则中可能有多个目标模式。这导致make在一次调用规则时构建所有这些目标。在这种情况下,$@
是想要构建的目标,导致此规则被触发。如果你想获得其他目标之一,你需要使用匹配模式的$*
自己构建它。所以:
%.x %.y :
@echo '@ = $@ / * = $*'
将获得输出:
$ make foo.x
@ = foo.x / * = foo
$ make foo.y
@ = foo.y / * = foo