如何从目标的依赖项列表中获取特定依赖项

时间:2011-04-06 03:26:35

标签: makefile

假设我在Makefile中有以下规则:

%.foo: %.bar %.spam %.bot
<tab> echo "hello1" > $<

我怎样才能将“hello2”回显到第二个依赖项(但不是.bot文件),即.spam文件?感谢

2 个答案:

答案 0 :(得分:6)

%.foo: %.bar %.spam %.bot
    echo "hello1" > $<    
    echo hello2 > $(word 2,$^)

(注意>覆盖,至少在我知道的shell中,这使整个练习毫无意义。要追加,请使用>>。)

答案 1 :(得分:1)

您所询问的是与make的正常操作相对立:规则应该修改冒号的 left 上命名的文件,而不是右侧的文件结肠。你没有在这里给出太多的背景,所以很难给你更具体的建议。

就您提出的具体问题而言,您可以使用以下内容:

%.foo: %.bar %.spam %.bot
    echo "hello1" > $<
    echo "hello2" > $*.spam

这使用$*自动变量,该变量被定义为与模式规则中的%字符匹配的文件名的一部分。