如何在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

最新更新