我正在尝试使用oasis
来编译我的项目,我的项目以这种方式组织:
_oasis
src/
main.ml
core_a.ml
core_b.ml
type.ml
plugins/
plugin_a.ml
plugin_b.ml
请注意,在plugin_a.ml
中,它指的是模块type.ml
(即open Type
)。
当我使用oasis
编译项目时,它会报告:
Unbound module Type
以下是我的_oasis
文件的简化版:
....
BuildTools: ocamlbuild
BuildDepends: deriving, deriving.syntax, core, batteries
Executable "main"
Path: src
MainIs: main.ml
CompiledObject: best
Install: false
BuildDepends: deriving, deriving.syntax, core, batteries
我在这里做错了吗?或者我正在做的不是组织这样一个项目的最佳做法吗?
答案 0 :(得分:1)
我认为你的项目结构有点奇怪。你有一个插件子目录,但是你应该注意到没有命名空间或包层次结构,所以这在实践中并没有用。
至于是否可能,答案似乎是混合的:
仅使用绿洲是不可能的,因为它不允许您为Path
选项指定多个值。
使用include
标记您需要的所有内容时,应该可以轻松完成ocamlbuild(但我不建议这样做)。
随着您的绿洲项目的发展,您应该研究在绿洲中定义库部分并使用它们来组织项目间的依赖关系。例如,在这种情况下,您可以创建一个“插件”库,其中包含plugin_a和plugin_b。但是如果没有一些计划,你将很快遇到循环依赖。