首页 > 解决方案 > 如何在命令行上将参数作为由空格分隔的值列表传递给 make 目标?

问题描述

我的 Makefile 如下所示:

#====================================================
PREFIX_LIST ?= 

append_prefix = $(foreach prefix, $(PREFIX_LIST), myText_$(prefix))

mytarget: 
     echo $(append_prefix)

#====================================================

我希望 PREFIX_LIST 有一个由空格分隔的值列表,并在我从命令行构建此目标时将其作为变量传递。

类似的东西(这并不完全正确):

$ 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 变量的方法。

标签: command-linemakefileparameterscommand-line-arguments

解决方案


只需将列表括在引号中(单引号或双引号):

$ make PREFIX_LIST="foo bar baz xyz" mytarget
myText_foo myText_bar myText_baz myText_xyz

foreach注意:您还可以使用以下功能代替功能addprefix

PREFIX_LIST ?= 

append_prefix = $(addprefix myText_,$(PREFIX_LIST))

mytarget: 
    @echo $(append_prefix)

推荐阅读