使用 Oasis 构建 OCaml 项目时未定义的模块
Undefined module when using Oasis to build an OCaml project
又是我..我正在做一个 OCaml
项目,我想用 Oasis
来构建整个代码库。这是我的代码库的组织方式。
src/
core/
init.ml
type.ml
utils.ml
plugin/
main.ml
我首先仅使用以下 _oasis
文件构建库:
Library "engine"
Path: src/core
Modules:
Init,
Type,
Utils
BuildDepends: deriving, deriving.syntax, core, batteries
XMETADescription: core engine
而且效果很好。没有错误,我可以在_build/src/core
文件夹中找到一个库engine.a
。
但是,当我尝试通过以下方式将库包含在 main.ml
中时:
Module T = Engine.Type
...
并使用以下 _oasis
文件进行编译:
Library "engine"
Path: src/core
Modules:
Init,
Type,
Utils
BuildDepends: deriving, deriving.syntax, core, batteries
XMETADescription: core engine
Executable "main"
Path: src/plugin
MainIs: main.ml
CompiledObject: best
Install: false
BuildDepends: core, batteries, engine
我收到一个错误:
Unbound module Engine
我是不是做错了什么?谁能给我一些帮助?谢谢!
您的 _oasis
模块定义了一个名为 engine
的库,但它没有定义 Engine
模块。因此,您的 Init
、Type
和 Utils
模块已公开,应该可以直接访问而无需任何前缀。
如果您想将这些模块打包到父模块中,您可以:
- 手动将每个模块打包成一个大
engine.ml
文件
- 在
_oasis
文件的 Library
部分中使用 Pack: true
,这会将包含的模块打包到名为 Engine
的模块中
- 使用模块别名(参见the OCaml manual for more information)
又是我..我正在做一个 OCaml
项目,我想用 Oasis
来构建整个代码库。这是我的代码库的组织方式。
src/
core/
init.ml
type.ml
utils.ml
plugin/
main.ml
我首先仅使用以下 _oasis
文件构建库:
Library "engine"
Path: src/core
Modules:
Init,
Type,
Utils
BuildDepends: deriving, deriving.syntax, core, batteries
XMETADescription: core engine
而且效果很好。没有错误,我可以在_build/src/core
文件夹中找到一个库engine.a
。
但是,当我尝试通过以下方式将库包含在 main.ml
中时:
Module T = Engine.Type
...
并使用以下 _oasis
文件进行编译:
Library "engine"
Path: src/core
Modules:
Init,
Type,
Utils
BuildDepends: deriving, deriving.syntax, core, batteries
XMETADescription: core engine
Executable "main"
Path: src/plugin
MainIs: main.ml
CompiledObject: best
Install: false
BuildDepends: core, batteries, engine
我收到一个错误:
Unbound module Engine
我是不是做错了什么?谁能给我一些帮助?谢谢!
您的 _oasis
模块定义了一个名为 engine
的库,但它没有定义 Engine
模块。因此,您的 Init
、Type
和 Utils
模块已公开,应该可以直接访问而无需任何前缀。
如果您想将这些模块打包到父模块中,您可以:
- 手动将每个模块打包成一个大
engine.ml
文件 - 在
_oasis
文件的Library
部分中使用Pack: true
,这会将包含的模块打包到名为Engine
的模块中
- 使用模块别名(参见the OCaml manual for more information)