command-line - 如何在命令行上将参数作为由空格分隔的值列表传递给 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 变量的方法。
解决方案
只需将列表括在引号中(单引号或双引号):
$ 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)
推荐阅读
- spring-integration - 队列大小的指标
- php - 有什么方法可以将字符串中的图像(带有图像的内容)放入 html 中?
- time-complexity - 所有用于计算算法运行时间的假设机器模型都相同吗?
- python - Django 和 SQLite:DurationField 算术
- reactjs - 即使使用箭头功能也无法设置状态
- angular - 在 Angular 中调用 document.documentElement.classList.add 有什么问题吗?
- postgresql - 如何查询版本化时间序列数据以获取可用的最新版本
- typescript - 将类型化对象的字段与 Typescript 中的原语进行比较的正确方法是什么?
- php - 是否有一个 php 函数可以将 nofollow 添加到链接?
- excel - 尝试从宏打开多个工作表时关闭弹出窗口