Неопределенный модуль при использовании Oasis для создания проекта OCaml

Это опять я.. Я работаю над 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

Я что-то здесь не так делаю? Кто-нибудь может мне помочь? Спасибо!

1 ответ

Решение

Ваш _oasis модуль определяет библиотеку с именем engine но это не определяет Engine модуль. Так что ваши Init, Type а также Utils модули открыты и должны быть доступны напрямую без префиксов.

Если вы хотите упаковать эти модули в родительский, вы можете:

Другие вопросы по тегам