如何将前缀和后缀添加到 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