如何从命令行将参数传递给 Makefile?
我明白我能做到
$ make action VAR="value"
$ value
with Makefile
VAR = "default"
action:
@echo $(VAR)
我如何获得以下行为?
$ make action value
value
怎么样
$make action value1 value2
value1 value2
你可能不应该这样做;你正在打破 Make 工作的基本模式。但这里是:
action:
@echo action $(filter-out $@,$(MAKECMDGOALS))
%: # thanks to chakrit
@: # thanks to William Pursell
EDIT:
为了解释第一个命令,
$(MAKECMDGOALS)
是命令行上拼写的“目标”列表,例如“动作值1值2”。
$@
is an 自动变量规则目标的名称,在本例中为“action”。
filter-out
是一个从列表中删除一些元素的函数。所以$(filter-out bar, foo bar baz)
回报foo baz
(它可以更微妙,但我们在这里不需要微妙)。
把这些放在一起,然后$(filter-out $@,$(MAKECMDGOALS))
返回在命令行上指定的目标列表,而不是“action”,它可能是“value1 value2”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)