Make:如何获得先决条件N

问题描述

假设我有这样的规则。

cmd写得不好,所以我实际上不能切换标志的顺序。 -f 必须走在-d之前。

out: foo.txt mydir fizz.txt
    cmd -f fizz.txt -d mydir foo.txt

是否有可能获得第N个前提条件,以便我可以像这样(伪代码)重写我的规则?

out: foo.txt mydir fizz.txt
    cmd -f $^[2] -d $^[1] $<

解决方法

是否有可能获得第N个先决条件

您可以使用$(word N,list)从列表中获得第N个字,这应该可以解决这个问题(未经测试):

out: foo.txt mydir fizz.txt
    cmd -f $(word 3,$^) -d $(word 2,$^) $<

请注意,索引词从1开始,而不是0。有关详细信息,请参阅 https://www.gnu.org/software/make/manual/make.html#Text-Functions