Hug*_*lpz 5 variables makefile gnu-make
鉴于master.makefile
调用子makefile,例如:
downloads:
make -f downloads.makefile
Run Code Online (Sandbox Code Playgroud)
还有一个子makefile,downloads.makefile
例如:
download: clean
curl -o ./data/<itemname>.png 'http://www.mysite.com/<itemname>.png'
echo "downloaded <itemname>: Done!"
Run Code Online (Sandbox Code Playgroud)
如何itemname
在我的主文件中设置一个全局变量,可用于我的子制作文件?
注意:我的项目实际上更复杂,有 12 个不同的子 makefile,它们应该重用来自主文件的相同参数/变量。masterfile 应该分配值,而 sub-makefile 应该检索我放置的变量的值<itemname>
。
有多种方法可以做到。
首先,在运行子制作时,始终使用$(MAKE)
,从不使用make
。然后...
1.可以在递归命令行上传递值:
itemname = whatever
downloads:
$(MAKE) -f downloads.makefile itemname=$(itemname)
Run Code Online (Sandbox Code Playgroud)
2.可以导出父makefile中的变量:
export itemname = myvalue
downloads:
$(MAKE) -f downloads.makefile
Run Code Online (Sandbox Code Playgroud)
带有子makefile,例如:
download:
echo "downloaded $(itemname): Done!"
Run Code Online (Sandbox Code Playgroud)