4

OCaml .ml ファイルと Menhir .mly ファイルを含むプロジェクトがあります。プロジェクトのコンパイルには ocamlbuild を使用します。

私の _tags ファイルには、次の 1 行が含まれています。

true: use_menhir, package(batteries)

.mly ファイルでバッテリーを使用する場合を除いて、すべて正常に動作します。.mlyファイルと.mly ファイルopen Batteries ;;の間で、ocamlbuild を呼び出すと、「エラー: モジュールのバッテリーがバインドされていません」というメッセージが表示されます。%{%}

次のように、ocamlbuild が menhir を呼び出しているようです。

/usr/bin/menhir --ocamlc '/usr/bin/ocamlfind ocamlc' --infer parser.mly

menhir-package batteriesのオプションに (または同等のものを)追加するのを忘れています。--ocamlc

どうすれば修正できますか?_tags ファイル内の .mly ファイルの特別なルールが役立つのではないでしょうか? それとも ocamlbuild のバグですか?

4

2 に答える 2

5

次の OCaml リリースの前に、Jonathan によって提供されたリンクで説明されている適切な回避策があります。.mlyファイルの名前がの場合、次の内容foo.mlyのファイルを定義できます。foo.mlypack

Foo

次に、生成foo.mlはファイルを使用します (元々は、menhir のモジュラー文法の組み合わせ機能をサポートするためのものでした)。これにより、コンパイル オプションがパラメーター.mlypackに正しく渡されます。これは、コンパイルがかなり前に修正されたためです。--infer.mlypack

于 2013-08-19T08:04:26.933 に答える