压缩列表

Version = GNU make

这个 pairmap 函数有三个参数:

  1. 功能名称
  2. 第一个以空格分隔的列表
  3. 第二个以空格分隔的列表

对于列表中的每个压缩元组,它将使用以下参数调用该函数:

  1. 第一个列表中的元组元素
  2. 第二个列表中的元组元素

它将扩展为以空格分隔的函数扩展列表。

list-rem = $(wordlist 2,$(words $1),$1)
pairmap = $(and $(strip $2),$(strip $3),$(call \
    $1,$(firstword $2),$(firstword $3)) $(call \
    pairmap,$1,$(call list-rem,$2),$(call list-rem,$3)))

例如,这个:

LIST1 := foo bar baz
LIST2 := 1 2 3

func = $1-$2

all:
    @echo $(call pairmap,func,$(LIST1),$(LIST2))

.PHONY: all

将打印 foo-1 bar-2 baz-3