2011-09-01 9 views
6

プロジェクトリポジトリ内に構築され、参照されている主要なサードパーティのライブラリ依存関係をすべて含んで、プロジェクトを自立させようとしています。私のプロジェクトの主な部分はocamlbuildに依存しています。ocamlfind/ocamlbuildツールチェーンをパッケージのプロジェクトローカルコピーでどのように使用できますか?

しかし、バッテリを含むような複雑なパッケージの場合、ocamlfindを介してプロジェクトにリンクされることが強く期待されているようです。 ocamlfindは、パッケージがグローバルにインストールされると想定しているようです。 (環境変数とそのconfが別の場所を指し示すことができるのは分かっていますが、基本的にはパッケージがグローバルに設定されているという仮定のもとに構築されているようです - -Iまたは-Lフラグに相当するものはありませんプロジェクトのローカルツリーを検索するためにocamlfind設定を動的にオーバーライドするように環境変数を設定することは可能かもしれませんが、これは単純な引数よりもはるかに扱いにくいです。同時にが必要になる場合もあり、主site-lib、メインシステムパッケージの見つけやすさを取り除く。)自明でない第三額面に対する建物と建物のための健全な戦略とは何

ocamlbuildを使用するプロジェクトのプロジェクトローカルツリー内のパッケージ?

答えて

3

環境変数を使用する(またはfindlib.confを分離する)ことは、簡単な方法です。また、グローバルパッケージの検出可能性を削除する必要はありません。pathおよびdestdirのリファレンスマニュアルをfindlib.conf(それぞれOCAMLPATHおよびOCAMLFIND_DESTDIRの環境変数)で参照してください。

基本的にそれらを使用する場合は、プロジェクト・ローカルパッケージをインストールするときに、ローカルパスにdestdirを設定し、pathから先頭に追加(あなたはバイトコードをビルドする場合destdirstublibsを作成(およびstdlibld.confに追加することを忘れないでくださいバイナリ))。

PSこれはocsigen-bundlerで使用されているアプローチだと思います。

問題が発生したかどうかを教えてください(同じアプローチを使用することに興味があるため)。

+0

私はこれまでこのルートを辿っていませんでしたので、私は成功を確認するのに時間がかかりましたが、うまくいくと思います。 – jrk

関連する問題