OCaml:将 Oasis 与多级 src 文件夹一起使用
OCaml: using Oasis with multiple-level src folders
我正在尝试使用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
我是不是做错了什么?或者我正在做的不是组织这样一个项目的最佳实践?
我觉得你的项目结构有点奇怪。你有一个插件的子目录,但你应该注意没有命名空间或包层次结构,所以这在实践中并不是很有用。
至于这是否可能,答案似乎是混合的:
仅使用 oasis 是不可能的,因为它不允许您为 Path
选项指定多个值。
使用 ocamlbuild 应该很容易完成,但是通过使用 include
标记您需要的所有内容(但我不推荐这样做)。
随着您的 oasis 项目的增长,您应该考虑在 oasis 中定义库部分并使用它们来组织项目间的依赖关系。例如,在这种情况下,您可以创建一个 "plugins" 库,其中包含 plugin_a 和 plugin_b。但是如果不提前计划,您将很快 运行 陷入循环依赖。
我正在尝试使用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
我是不是做错了什么?或者我正在做的不是组织这样一个项目的最佳实践?
我觉得你的项目结构有点奇怪。你有一个插件的子目录,但你应该注意没有命名空间或包层次结构,所以这在实践中并不是很有用。
至于这是否可能,答案似乎是混合的:
仅使用 oasis 是不可能的,因为它不允许您为
Path
选项指定多个值。使用 ocamlbuild 应该很容易完成,但是通过使用
include
标记您需要的所有内容(但我不推荐这样做)。
随着您的 oasis 项目的增长,您应该考虑在 oasis 中定义库部分并使用它们来组织项目间的依赖关系。例如,在这种情况下,您可以创建一个 "plugins" 库,其中包含 plugin_a 和 plugin_b。但是如果不提前计划,您将很快 运行 陷入循环依赖。