在我需要的 makfile 的一个地方
a.ml a.mli b.ml b.mli c.ml c.mli 等
我另一个地方,我需要
a.mli b.mli c.mli 等
如果不重复,我是否可以定义两个单独的等长列表(一个 .ml 文件和一个 .mli 文件),然后定义另一个列表作为两个列表的交错?
事实上,由于总是有一个 .ml 和一个对应的 .mli,我可以从一个没有扩展名的文件名列表(即 abc 等)生成所有这些吗?
在我需要的 makfile 的一个地方
a.ml a.mli b.ml b.mli c.ml c.mli 等
我另一个地方,我需要
a.mli b.mli c.mli 等
如果不重复,我是否可以定义两个单独的等长列表(一个 .ml 文件和一个 .mli 文件),然后定义另一个列表作为两个列表的交错?
事实上,由于总是有一个 .ml 和一个对应的 .mli,我可以从一个没有扩展名的文件名列表(即 abc 等)生成所有这些吗?
有几种方法可以做到这一点。这可能是最普遍的:
LIST := a b c
MLLIST := $(addsuffix .ml,$(LIST))
MLILIST := $(addsuffix .mli,$(LIST))
both = $(1).ml $(1).mli
BOTHLIST := $(foreach x,$(LIST),$(call both,$(x)))
如果您获得 Make Standard Library 的副本:http: //gmsl.sourceforge.net/您可以使用该pairmap
功能,我相信它可以满足您的需求。