について一貫性のない仮定を引き起こし、私のocamlbuildベースのプロジェクト構造である:シングルOCamlのモジュールは、ここでインターフェース
_tags.ml:
true: package(batteries)
Main.mlpack
Stream
メイン/ Stream.ml
module MyStream = BatStream
a Main
モジュールをコンパイルしようとしているmは
ocamlbuild -use-ocamlfind Main.cmo
を使用してエラーメッセージが私にはかなり非論理的なようだ:
+ ocamlfind ocamlc -pack Main/Stream.cmo -o Main.cmo
File "_none_", line 1:
Error: The files Main/Stream.cmi and Main/Stream.cmi
make inconsistent assumptions over interface Stream
Command exited with code 2.
Compilation unsuccessful after building 3 targets (0 cached) in 00:00:00
これはOPAMからのOCaml 4.02.1を使用しています。
これは、バッテリとリンクしているときにのみ発生するので、Batteries.Stream
とMain.Stream
の間に競合があると判断できます。実際、依存関係のあるモジュールを追加すると、
Error: The files /home/ken/.opam/4.02.1/lib/batteries/batteries.cmi
and Main/Stream.cmi make inconsistent assumptions
over interface Stream
のようなメッセージが表示されますが、サブモジュールが衝突するとは思われません。
どうしてですか?モジュールがインターフェイス上でそれ自身と競合するかもしれないと私には不可能なようです。
あなたはきれいにしようとしましたか(つまり、 'rm -rf _build')? – Drup
@Drup確かに私はしました。これらの3つのファイルを含む新しいプロジェクトは、指定されたエラーを生成します。 –