在我的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