2

我正在开发一个带有沙丘的大型图书馆。让我们称这个库L

为避免造成大混乱,dune 项目有许多较小的库:、、、A...B这些C库相互依赖。

我希望用户能够opam install L,然后访问不同的小型库,如L.AL.B

这样做的正确方法是什么?

按照@glennsl 的评论进行编辑

这是文件系统树:

l/
l/dune-project
l/a            <- This directory contains library A
l/a/dune
l/b            <- This directory contains library B
l/b/dune

l/a/dune

(library
 (name a)
 (public_name l.a))

l/b/dune

(library
 (name b)
 (public_name l.b)
 (libraries a)) 

l/a/dune-project

(name l)

我找不到如何公开AB作为L.

4

1 回答 1

2

除非有一些配置设置干扰,否则这应该只是将其他库的模块导出为模块别名的问题:

(* L.ml (and L.mli) *)

module A = A
module B = B
module C = C

(* ... *)

这实际上是dune对命名空间库模块自动执行的操作。如果您还没有明确的主模块L,则必须手动添加也会自动生成的模块别名。

于 2020-10-09T11:40:46.517 回答