2016-09-27 9 views
0

私はOCamlプロジェクトに取り組んでおり、Oasisを使用してコードベース全体を構築したいと考えています。私のコードベースはどのように構成されています。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フォルダにあります。

Module T = Engine.Type 
... 

そして、次の_oasisファイルをコンパイルします:私は次のようにmain.mlにライブラリを含めるしようとすると、

はしかし、

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モジュールは定義されていません。したがって、お客様のInitType、およびUtilsモジュールが公開されており、接頭辞なしで直接アクセスできる必要があります。

あなたはあなたができる親にそれらのモジュールをパックしたい場合:

  • が手動で一つの大きなengine.mlファイルに、各モジュールをパック
  • 含まパックでしょう、あなたの_oasisファイルのLibraryセクションで使用Pack: trueEngine
  • 使用モジュールエイリアスと呼ばれるモジュールにモジュール(the OCaml manual for more informationを参照)
関連する問題