Makefile 如何从目标的依赖项列表中获取特定的依赖项
假设我在Makefile中有以下规则:Makefile 如何从目标的依赖项列表中获取特定的依赖项,makefile,Makefile,假设我在Makefile中有以下规则: %.foo:%.bar%.spam%.bot echo“hello1”>$%.foo:%.bar%.spam%.bot 回声“hello1”>$< 回声hello2>$(单词2,$^) (请注意,覆盖,至少在我知道的shell中是这样,这使得整个练习毫无意义。要附加,请使用>)您所要求的与make的正常操作相反:规则应该修改冒号左侧的文件,而不是冒号右侧的文件。你在这里没有给出太多的背景,所以很难给你比这更具体的建议 对于您提出的特定问题,您可以使用以
%.foo:%.bar%.spam%.bot
echo“hello1”>$%.foo:%.bar%.spam%.bot
回声“hello1”>$<
回声hello2>$(单词2,$^)
(请注意,
覆盖,至少在我知道的shell中是这样,这使得整个练习毫无意义。要附加,请使用>
)您所要求的与make的正常操作相反:规则应该修改冒号左侧的文件,而不是冒号右侧的文件。你在这里没有给出太多的背景,所以很难给你比这更具体的建议
对于您提出的特定问题,您可以使用以下内容:
%.foo: %.bar %.spam %.bot
echo "hello1" > $<
echo "hello2" > $*.spam
%.foo:%.bar%.spam%.bot
回声“hello1”>$<
回显“hello2”>$*.spam
这使用了$*
自动变量,该变量定义为模式规则中与%
字符匹配的文件名部分。是的。我将Makefile用于其他目的,而不是用于编译。我找到了Beta建议的方法,但我更喜欢你的方法。它很整洁。谢谢,交替使用$(word 2,$^)
。发件人:
%.foo: %.bar %.spam %.bot
echo "hello1" > $<
echo "hello2" > $*.spam