2011-04-06 48 views
3

假设我有在Makefile一以下规则:如何从依赖列表中的特定依赖的目标

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

怎么能我也附和“hello2”进第二个依赖项(但不是.bot文件),即.spam文件?由于

+1

或者,使用'$(word 2,$ ^)'。来自:http://stackoverflow.com/questions/11424204 – 2014-08-12 22:38:37

回答

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

(注意>改写,至少在我所知道的炮弹,这使得整个演习很没有意义的。要追加,使用>>。)

1

什么你问是对立的make的正常运行:一条规则应该修改冒号左侧上的文件,而不是右侧上的文件。你在这里没有给出很多背景,所以很难给你更具体的建议。

至于具体的问题你问,你可以使用这样的事情:

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

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

+0

是的。我将Makefile用于其他目的,而不是用于编译。我发现了Beta的建议,但我更喜欢你的方式。它很整洁。谢谢 – RNAer 2011-04-08 15:30:52

相关问题