You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Makefile中向Python脚本传递命令行参数?

解决Makefile传递参数给Python脚本的问题

我来帮你搞定这个Makefile传参的需求!下面给你两种实用的方法,根据你的场景选就行:

方法1:指定固定参数变量

如果希望用户通过明确的变量名传递type参数,可以这样写Makefile:

command:
	python abc.py --type "$(TYPE)"

使用的时候,直接在命令行传入TYPE变量的值:

make command TYPE="blah"

这样Make就会把$(TYPE)替换成你输入的内容,最终执行python abc.py --type "blah"。如果需要支持短格式-t,也可以改成-t "$(TYPE)",或者两种格式都写上,看你需求。

方法2:传递任意命令行参数

要是想更灵活,让用户能直接像运行Python脚本一样传递任意参数(不管是--type还是-t,甚至其他脚本支持的参数),可以用这个写法:

command:
	python abc.py $(filter-out $@,$(MAKECMDGOALS))

# 这个空目标用来避免Make把参数当成未知目标报错
%:
	@:

现在你就能直接这样调用:

make command --type "blah"
# 或者短格式
make command -t "blah"

$(filter-out $@,$(MAKECMDGOALS))的作用是把命令行里除了command这个目标之外的所有参数都提取出来,传递给你的Python脚本。后面的%:空目标是为了防止Make把你传入的参数(比如--type)当成一个要构建的目标而报错。

小提示

如果参数里包含空格、$这类特殊字符,记得用双引号括起来,避免被Make或者shell解析出错哦。

内容的提问来源于stack exchange,提问作者Aditya Mishra

火山引擎 最新活动