如何在makefile中交错两个列表?

时间:2013-07-16 20:00:26

标签: makefile

在makfile的一个地方我需要

a.ml a.mli b.ml b.mli c.ml c.mli等。

我是另一个地方,我需要

a.mli b.mli c.mli等。

没有重复,我可以定义两个单独的,相等长度的列表(一个.ml文件和一个.mli文件),然后定义另一个列表作为两个列表的交错?

事实上,由于总有一个.ml和一个相应的.mli,我可以从一个没有扩展名的文件名列表中生成所有这些吗(即b等)?

2 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。这可能是最常见的:

LIST := a b c

MLLIST := $(addsuffix .ml,$(LIST))
MLILIST := $(addsuffix .mli,$(LIST))

both = $(1).ml $(1).mli

BOTHLIST := $(foreach x,$(LIST),$(call both,$(x)))

答案 1 :(得分:1)

如果您获得了制作标准库的副本:http://gmsl.sourceforge.net/,您可以使用pairmap功能,我相信您正在寻找的功能。