ocaml - OCaml 和 dune :将小型库集成到更大的库中
问题描述
我正在开发一个带有沙丘的大型图书馆。让我们称这个库L
。
为避免造成大混乱,dune 项目有许多较小的库:、、、A
...B
这些C
库相互依赖。
我希望用户能够opam install L
,然后访问不同的小型库,如L.A
,等。L.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)
我找不到如何公开A
和B
作为L
.
解决方案
除非有一些配置设置干扰,否则这应该只是将其他库的模块导出为模块别名的问题:
(* L.ml (and L.mli) *)
module A = A
module B = B
module C = C
(* ... *)
这实际上是dune
对命名空间库模块自动执行的操作。如果您还没有明确的主模块L
,则必须手动添加也会自动生成的模块别名。
推荐阅读
- javascript - 在没有导入范围功能的情况下将数据从一个电子表格导入到另一个电子表格
- reactjs - React Router v4嵌套路由在子级别时不起作用
- machine-learning - 向二元分类器添加大量正例会产生什么影响?
- android - 声明后,Android Studio 不会立即创建视图 ID
- neo4j - Neo4j 使用 neo4j-jdbc 删除节点属性
- openedge - Progress .Net open client - 何时使用 ProDataSet 而不是 Temp-Tables?
- reactjs - 永远不会在子组件中调用 ShouldComponentUpdate
- java - 按值排序的 BinaryTree 打印
- docker - 有没有办法清除 docker 历史记录?
- postgresql - 一个通常简单的 SQL 连接