如何在 make 目标的命令行上将参数作为由 space 分隔的值列表传递?
How to pass the arguments as list of values delimited by space on command line for a make target?
我的 Makefile 如下所示:
#====================================================
PREFIX_LIST ?=
append_prefix = $(foreach prefix, $(PREFIX_LIST), myText_$(prefix))
mytarget:
echo $(append_prefix)
#====================================================
我希望 PREFIX_LIST 有一个由 space 分隔的值列表,并在我从命令行构建此目标时将其作为变量传递。
类似于(这不完全正确):
$ make PREFIX_LIST= [list of values] mytarget
我已经尝试将 Makefile 中的值传递为:
#====================================================
PREFIX_LIST ?= foo bar baz xyz
append_prefix = $(foreach prefix, $(PREFIX_LIST), myText_$(prefix))
mytarget:
echo $(append_prefix)
#====================================================
它产生了预期的输出(见底部)
在命令行上:
$ make mytarget
输出:
myText_foo myText_bar myText_baz myText_xyz
这也是我所期望的。我想找出一种从命令行将值列表传递给 PREFIX_LIST 变量的方法。
只需将列表括在引号中(单引号或双引号):
$ make PREFIX_LIST="foo bar baz xyz" mytarget
myText_foo myText_bar myText_baz myText_xyz
注意:您也可以使用 addprefix
:
而不是 foreach
函数
PREFIX_LIST ?=
append_prefix = $(addprefix myText_,$(PREFIX_LIST))
mytarget:
@echo $(append_prefix)
我的 Makefile 如下所示:
#====================================================
PREFIX_LIST ?=
append_prefix = $(foreach prefix, $(PREFIX_LIST), myText_$(prefix))
mytarget:
echo $(append_prefix)
#====================================================
我希望 PREFIX_LIST 有一个由 space 分隔的值列表,并在我从命令行构建此目标时将其作为变量传递。
类似于(这不完全正确):
$ make PREFIX_LIST= [list of values] mytarget
我已经尝试将 Makefile 中的值传递为:
#====================================================
PREFIX_LIST ?= foo bar baz xyz
append_prefix = $(foreach prefix, $(PREFIX_LIST), myText_$(prefix))
mytarget:
echo $(append_prefix)
#====================================================
它产生了预期的输出(见底部)
在命令行上:
$ make mytarget
输出:
myText_foo myText_bar myText_baz myText_xyz
这也是我所期望的。我想找出一种从命令行将值列表传递给 PREFIX_LIST 变量的方法。
只需将列表括在引号中(单引号或双引号):
$ make PREFIX_LIST="foo bar baz xyz" mytarget
myText_foo myText_bar myText_baz myText_xyz
注意:您也可以使用 addprefix
:
foreach
函数
PREFIX_LIST ?=
append_prefix = $(addprefix myText_,$(PREFIX_LIST))
mytarget:
@echo $(append_prefix)