0

又是我……我正在做一个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

它工作正常。没有错误,我可以engine.a_build/src/core文件夹中找到一个库。

但是,当我尝试通过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

我在这里做错什么了吗?谁能给我一些帮助?谢谢!

4

1 回答 1

1

您的_oasis模块定义了一个具有名称的库,engine但它没有定义一个Engine模块。因此,您的Init,TypeUtils模块是公开的,应该可以直接访问而无需任何前缀。

如果要将这些模块打包到父模块中,您可以:

  • 手动将每个模块打包成一个大engine.ml文件
  • Pack: true在文件的Library部分中使用_oasis,它将包含的模块打包到一个名为的模块中Engine
  • 使用模块别名(有关更多信息,请参阅 OCaml 手册
于 2016-09-27T19:51:32.967 回答