在 Makefile 变量中散布项目

Intersperse items in Makefile variables

我正在使用 Makefile 生成 C 头文件并想做这样的事情:

printf '{%s, %s}\n' $(ARRAY1) $(ARRAY2)

除了 ARRAY1ARRAY2 中的值穿插。

这是一个例子:

ARRAY1 := a b c d
ARRAY2 := e f g h

期望的输出:

{a, e}
{b, f}
{c, g}
{d, h}

仅 GNU 解决方案很好。

我使用 join 和替换引用的组合解决了这个问题(尽管可以使用 patsubst):

printf '{%s}\n' $(join $(ARRAY1),$(ARRAY2:%=,%))

它产生的结果与我想要的足够接近,只是缺少逗号后的 space。

看看gmtt - The GNUmake table toolkit。 它有一个 "join tables" 函数可以做你想做的事,假设你使用 gmtt 表(没有别的,只是一个列数作为前导元素的列表)。