给定一个调用子makefile的master.makefile
,例如:
downloads:
make -f downloads.makefile
子文件downloads.makefile
如下:
download: clean
curl -o ./data/<itemname>.png 'http://www.mysite.com/<itemname>.png'
echo "downloaded <itemname>: Done!"
如何在我的主文件中设置全局变量itemname
,可用于我的子生成文件?
注意:我的项目实际上更复杂,有 12 个不同的子 makefile,它们应该重用主文件中的相同参数/变量。主文件应该分配值,而子 makefile 应该检索我放置<itemname>
的变量值。
有多种方法可以做到这一点。
首先,始终,始终使用$(MAKE)
,在运行子品牌时永远不要make
。然后。。。
1. 您可以在递归命令行上传递值:
itemname = whatever
downloads:
$(MAKE) -f downloads.makefile itemname=$(itemname)
2. 您可以在父生成文件中导出变量:
export itemname = myvalue
downloads:
$(MAKE) -f downloads.makefile
使用子生成文件,例如:
download:
echo "downloaded $(itemname): Done!"