1

在我需要的 makfile 的一个地方

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

我另一个地方,我需要

a.mli b.mli c.mli 等

如果不重复,我是否可以定义两个单独的等长列表(一个 .ml 文件和一个 .mli 文件),然后定义另一个列表作为两个列表的交错?

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

4

2 回答 2

3

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

LIST := a b c

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

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

BOTHLIST := $(foreach x,$(LIST),$(call both,$(x)))
于 2013-07-16T23:32:21.867 回答
1

如果您获得 Make Standard Library 的副本:http: //gmsl.sourceforge.net/您可以使用该pairmap功能,我相信它可以满足您的需求。

于 2013-07-16T20:37:50.193 回答