如何从命令行将参数传递给 Makefile?
我明白我能做到
$ make action VAR="value"
$ value
与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
编辑:
解释第一个命令,
$(MAKECMDGOALS)
是命令行上拼写的“目标”列表,例如“ Action 值1值2”。
$@
是 automatic variable规则目标的名称,在本例中为“action”。
filter-out
是一个从列表中删除某些元素的函数。所以 $(filter-out bar, foo bar baz)
返回 foo baz
(它可以更微妙,但我们在这里不需要微妙)。
将它们放在一起,$(filter-out $@,$(MAKECMDGOALS))
返回在命令行上指定的目标列表,而不是“action”,它可能是“value1 value2” .
关于command-line - 如何从命令行将参数传递给 Makefile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6273608/