2016-09-27 88 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
相關問題