xcode packaging




XCodeでのアプリケーションによるフレームワークのバンドル (2)

私はXcodeの初心者です。 私はこれらの指示に従おうとしています。 私が望むフレームワークがアプリケーションバンドルにコピーされているのを見ることができますが、私はそれを参照することができないので、明らかに私は何かが欠けています。

私が鉱山以外のマシンからアプリケーションを起動すると(または、/ Library / Frameworks /からOpenCVを削除した場合)、次のエラーが表示されます。

Dyldエラーメッセージ:ライブラリがロードされていません:/Users/david/Library/Frameworks/OpenCV.framework/Versions/A/OpenCV参照先:/Users/g/Demo/Slates/ClipSplitter/build/Release/ClipSplitter.app/Contents/ MacOS / ClipSplitter理由:画像が見つかりません

私のシステムには、ユーザーに「ダビデ」はありません。 また、これはインターネットからダウンロードされたあらかじめ作成されたOpenCVです。 ( ここには、コメントでリクエストされたプロジェクトのスクリーンショットがあります)。


Xcode 5を使用すると、アプリケーションターゲットの[ Build Phases ]パネルを使用して、これを容易にすることができます。

このパネルのデフォルトの外観は次のとおりです。

[ ファイルのコピー ]の下にある[+]ボタンを押すと、フレームワークをファイルとして追加して、アプリケーションバンドルのフレームワークにコピーすることができます。

今、あなたがビルドすると、あなたのフレームワークはバンドルにコピーされます。


OpenCV.frameworkがビルドされると、 /Users/david/Library/Frameworks/インストールパスを使用するように設定されています。

ライブラリをプライベートフレームワーク( ClipSplitter.app/Contents/Frameworks/OpenCV.frameworkのアプリケーションラッパーにインストールされている)として使用するには、インストールパスを変更する必要があります。 これは以下のように端末を使って簡単に行うことができます:

$ install_name_tool -id @executable_path/../Frameworks/OpenCV.framework/OpenCV <your_path>/OpenCV.framework/OpenCV

もちろん、最後の引数のパスを調整する必要があります。

これで、アプリケーションをリンクするときに、変更されたフレームワークがdyldがアプリケーションのアプリケーションラッパー(ClipSplitter.app/Contents/Frameworksディレクトリ内)のOpenCV.frameworkを検索しなければならないことをリンカーに通知します。

これでOpenCV.frameworkをアプリケーションラッパーにコピーする必要があります。 ターゲットを右クリックし、[Add] - [New Build Phase] - [New Copy Files Build Phase]を選択して、ビルドプロセスの一環としてこれを実行できます。 "Destination"ポップアップから "Frameworks"を選択し、ダイアログを閉じます。

ターゲットにXcodeウィンドウの左側にあるProject NavigatorからアイコンをドラッグしてOpenCV.frameworkを追加できる新しいフェーズが追加されました。 Xcodeでは、 '+'ボタンを使用してファイルをコピーするフェーズにフォルダを追加することはできませんので、フレームワークをコピーするにはドラッグアンドドロップする必要があります。





frameworks