2016-09-27 86 views
0

这是我,再次..我正在研究一个OCaml项目,并且我想使用Oasis来构建整个代码库。这是我的代码库的组织方式。使用Oasis构建OCaml项目时未定义的模块

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 

我在这里做错了什么吗?任何人都可以给我一些帮助吗?谢谢!

回答

1

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

如果您希望将这些模块打包成一个家长,你可以:

  • 手动打包每个模块成一个大engine.ml文件
  • 使用Pack: true_oasis文件的Library节这将包所包含的模块到名为模块Engine
  • 使用模块别名(见the OCaml manual for more information
相关问题