Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Makefile变量中穿插项_Makefile_Gnu Make - Fatal编程技术网

在Makefile变量中穿插项

在Makefile变量中穿插项,makefile,gnu-make,Makefile,Gnu Make,我正在使用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): 它产生的结果非常接近我想要的,只是缺少

我正在使用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
):

它产生的结果非常接近我想要的,只是缺少逗号后的空格。

请看一看。
它有一个函数,可以实现您想要的功能,假设您使用gmtt表(只有一个列数作为前导元素的列表)。

Nice,但我宁愿这样做,而不需要外部库。我会记住gmtt的未来though@Samadi考虑到在make中集成外部lib的工作量很小(只是直接包含源代码)我至少会比较这两种解决方案,看看在您编写它们几天后重新思考它们需要付出多少努力——在您忘记了大部分创建过程的情况下,尝试找出自己的make代码是相当困难的。谢谢您的建议。我现在接受我的答案,因为它不是特别复杂,但我会比较两种解决方案。
printf '{%s}\n' $(join $(ARRAY1),$(ARRAY2:%=,%))