在 Makefile 变量中散布项目
Intersperse items in Makefile variables
我正在使用 Makefile 生成 C 头文件并想做这样的事情:
printf '{%s, %s}\n' $(ARRAY1) $(ARRAY2)
除了 ARRAY1
和 ARRAY2
中的值穿插。
这是一个例子:
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 表(没有别的,只是一个列数作为前导元素的列表)。
我正在使用 Makefile 生成 C 头文件并想做这样的事情:
printf '{%s, %s}\n' $(ARRAY1) $(ARRAY2)
除了 ARRAY1
和 ARRAY2
中的值穿插。
这是一个例子:
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 表(没有别的,只是一个列数作为前导元素的列表)。