0

プロジェクトをコンパイルするために使用しようとしていますoasisが、プロジェクトは次のように編成されています。

_oasis
src/
    main.ml
    core_a.ml
    core_b.ml
    type.ml
    plugins/
        plugin_a.ml
        plugin_b.ml 

では、モジュール(つまり、 )plugin_a.mlを指すことに注意してください。type.mlopen Type

プロジェクトをコンパイルするために使用oasisすると、次のように報告されます。

Unbound module Type

これが私の_oasisファイルの簡略版です:

....
BuildTools:   ocamlbuild
BuildDepends: deriving, deriving.syntax, core, batteries

Executable "main"
  Path:           src
  MainIs:         main.ml
  CompiledObject: best
  Install:        false
  BuildDepends:   deriving, deriving.syntax, core, batteries

私はここで何か悪いことをしていますか? または、私がやっていることは、このようなプロジェクトを編成するためのベストプラクティスではありませんか?

4

1 に答える 1

1

あなたのプロジェクト構造は少し奇妙だと思います。プラグイン用のサブディレクトリがありますが、名前空間やパッケージ階層がないため、実際にはあまり役に立たないことに注意してください。

これが可能かどうかについては、答えはまちまちのようです。

  • オプションに複数の値を指定できないため、oasis だけではできませんPath

  • ただし、必要なものすべてにタグを付けることで、ocamlbuild を使用して簡単に実行できますinclude(ただし、これはお勧めしません)。

oasis プロジェクトが成長するにつれて、oasis でライブラリ セクションを定義し、それらを使用してプロジェクト間の依存関係を整理することを検討する必要があります。たとえば、この場合、plugin_a と plugin_b を含む「プラグイン」ライブラリを作成できます。ただし、ここで事前に計画を立てないと、すぐに循環依存関係に陥ります。

于 2016-10-07T03:16:55.710 に答える