2011-07-05 5 views
0

私たちのプロジェクトは、クロスプラットフォームで、何らかのプログラミング言語のオープンソースの実装です。その言語でプログラムを実行するコマンドライン実行可能ファイルに加えて、ユーザーが独自のモジュールを追加するために使用できるC++ APIとライブラリも用意されています。Mac OS Xフレームワークは適切ですか?

私は、Mac OS X用のフレームワーク(.pkgファイル)として私たちのものを提供する価値があるかどうかを判断しようとしています。もし何もしなければ、まだなど

当社の実装/usr/local/include/usr/local/libにすべてをかけることになりmake installターゲットは、いくつかのサードパーティのライブラリ、例えば、XercesのとICUが必要です。これらのライブラリのあらかじめ構築されたバージョンを "リソース"とみなし、フレームワークにバンドルすることはできますか?これは第三者図書館を配布する正当な方法ですか?

答えて

2

私はフレームワークが好きです。彼らは物事をきちんと整理しています。フレームワークはXcodeであなたのライブラリを使いやすくしますが、コマンドラインでの使用にも便利です(-framework MyCoolLang)。そうすれば、別々の検索パスを設定せずにヘッダーを#includeして使用することができます。

これは、他のプラットフォームでもヘッダーを/usr/local/include/MyCoolLang/{foo,bar}.hに置く必要があるため、人々が同じ相対インクルードパスを使用できるようになります。とにかくそれはきちんとしているので、これをやっているはずです。

#includeなどのサブディレクトリのないインクルードパスをサポートする必要がある場合や、コマンドラインからコンパイルするとき(-frameworkの代わりに)-lMyCoolLangなどの従来のコンパイラオプションをサポートしたい場合は、シンボリックリンクヘッダーおよび/またはライブラリを/ usr/local/libにインクルードします。これは、ls -l/usr/includeだけで、シンボリックリンクのパスによってどのヘッダがあなたのフレームワークに属するのかを正確に伝えることができるので、そこに実際のファイルをダンプするよりも優れています。

+0

サードパーティのライブラリはどうですか? –

+0

'MyCoolLang.framework/Contents/Libraries'の中に置くことができます。 MyCoolLangライブラリが '@ loader_path'を使ってそれらを参照するようにしてください(' man dyld'参照)。 – LaC