如何将前缀和后缀添加到 makefile 中的列表?
How to add both prefix and suffix to a list in makefile?
在我的 makefile 中,我尝试向列表中的每个项目添加前缀和后缀。
例如:
假设列表包含:
ITEMS =item1 item2 item3
我想得到这个字符串:
ITEMS_PADDED =--before item1 --after1 --after2 --before item2 --after1 --after2 --before item3 --after1 --after2
我尝试使用 addprefix 和 addsuffix 命令,但它将添加的前缀视为项目,因此它向前缀添加了一个后缀,因为它是一个项目:
用下面的代码
ITEMS =item1 item2 item3
ITEMS_PREFIX =$(addprefix ' --before ', $(ITEMS))
ITEMS_SUFFIX =$(addsuffix ' --after ', $(ITEMS_PREFIX))
list_items:
@echo $(ITEMS)
@echo $(ITEMS_PREFIX)
@echo $(ITEMS_SUFFIX)
我得到了这个结果:
item1 item2 item3
--before item1 --before item2 --before item3
--after --before --after item1 --after --after --before --after item2 --after --after --before --after item3 --after
这显然是不正确的。
这是 foreach
的工作:
ITEMS := item1 item2 item3
ITEMS_FOREACH := $(foreach item,$(ITEMS),--before $(item) --after1 --after2)
list_items:
@echo $(ITEMS)
@echo $(ITEMS_FOREACH)
来自手册:https://www.gnu.org/software/make/manual/html_node/Foreach-Function.html
在我的 makefile 中,我尝试向列表中的每个项目添加前缀和后缀。
例如: 假设列表包含:
ITEMS =item1 item2 item3
我想得到这个字符串:
ITEMS_PADDED =--before item1 --after1 --after2 --before item2 --after1 --after2 --before item3 --after1 --after2
我尝试使用 addprefix 和 addsuffix 命令,但它将添加的前缀视为项目,因此它向前缀添加了一个后缀,因为它是一个项目:
用下面的代码
ITEMS =item1 item2 item3
ITEMS_PREFIX =$(addprefix ' --before ', $(ITEMS))
ITEMS_SUFFIX =$(addsuffix ' --after ', $(ITEMS_PREFIX))
list_items:
@echo $(ITEMS)
@echo $(ITEMS_PREFIX)
@echo $(ITEMS_SUFFIX)
我得到了这个结果:
item1 item2 item3
--before item1 --before item2 --before item3
--after --before --after item1 --after --after --before --after item2 --after --after --before --after item3 --after
这显然是不正确的。
这是 foreach
的工作:
ITEMS := item1 item2 item3
ITEMS_FOREACH := $(foreach item,$(ITEMS),--before $(item) --after1 --after2)
list_items:
@echo $(ITEMS)
@echo $(ITEMS_FOREACH)
来自手册:https://www.gnu.org/software/make/manual/html_node/Foreach-Function.html