假设我在Makefile中有以下规则:
%.foo: %.bar %.spam %.bot
<tab> echo "hello1" > $<
我怎样才能将“hello2”回显到第二个依赖项(但不是.bot文件),即.spam文件?感谢
答案 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
这使用$*
自动变量,该变量被定义为与模式规则中的%
字符匹配的文件名的一部分。