2017-03-09 2 views
0

ocamlbuildを使用して正常にビルドされたプロジェクトがあります。しかし、私はまた、トップレベルを介して異なるモジュールからのプロジェクトの個々の機能とやりとりする簡単な方法が好きですが、ocamlmktopを使った私の試みはうまくいきませんでした。私は、手動で.cmiファイルをアクティブディレクトリに置かない限り、「Unbound module」エラーが発生することがわかりました。私は現在、構築するために使用しているコマンドは次のとおりです。ocamlbuildでocamlmktopを使用する

ocamlfind ocamlmktop -I _build -o my_ocaml -linkpkg -package str module1.cmo module2.cmo 

_buildディレクトリの外にCMIファイルを移動せずに、このプロジェクト構造に動作するようにトップレベルを取得するためのより良い、より少ないハック方法はありますか?

編集:私は私が

./my_ocaml -I _build 

としてトップレベルを実行します。しかし、これはまだハックと思われる場合、それはタイプとモジュールをロードするために得ることができることを考え出しました。おそらく、検索パスやcmiファイルを焼く方法はありますか?

編集2:私の問題に対する解決策は、インターフェイスファイルに関するこの制限が与えられていても、実際にカスタムトップレベルをコンパイルすることではないと思われます。代わりに私の.ocamlinitにロードディレクティブを追加してモジュールを使用しました。誰かがこれを解決するためのより良いアイデアを持っているなら、私はそれを高く評価します。

Module1 
Module2 
subdir/Module3 

が次に予想される方法で ocamlmktopを呼び出すターゲット my_ocaml.topを構築し、あなたは結果 my_ocaml.topトップレベルを実行することができます。

答えて

0

あなたはmy_ocaml.mltopファイルにしたいモジュール名をリストすることによって、トップレベルを構築することができます。

これは、.cmiファイルを見つけるためにタイプチェッカーのインクルードパスに_buildを追加する必要がある方法を変更しません。これは、コマンドライン引数-I _buildを渡すか、最上位の#dir "_build";;を渡してトップレベルを呼び出すときに行うことができます。もし望むなら最後のコマンドを.ocamlinitに入れることもできます。

関連する問題