如何从命令行传递变量值至Makefile,适配指定命令调用格式
解决Makefile通过
--传递参数给目标的问题 在make里,--的作用是把后面的参数直接传给目标的执行命令,而不是让make自己解析。针对你的需求,有两种修改方式:
方式1:直接把参数拼到执行命令里
直接改execute目标的定义,让它自动带上你通过--传递的参数:
.PHONY: execute execute: execute -config configuration.json $(filter-out $@,$(MAKECMDGOALS))
这么改之后,你执行make execute -- -mode stress时,$(filter-out $@,$(MAKECMDGOALS))会自动提取出-mode stress,最终执行的命令就是execute -config configuration.json -mode stress,完全符合你的要求。
方式2:兼容两种传参方式
如果你还想同时支持make execute mode=stress这种直接给变量赋值的写法,可以这么写:
.PHONY: execute execute: execute -config configuration.json -mode $(or $(mode),$(word 2,$(filter-out $@,$(MAKECMDGOALS))))
这里$(or ...)会优先用你通过mode=stress赋值的变量值,如果没有的话,就从--传递的参数里提取stress这个值。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

