Xcode 4.5 と MacOS 10.7.4 を実行しており、ローカル配布用の MacOS アプリを作成しようとしています。
サードパーティの USB ハードウェア ベンダーからの dylib があります。これを /usr/lib にドロップするのではなく、アプリにバンドルしたかったのです。ここに記載されているすべての方法を試しましたが、次のことがわかりました。
Cocoa ライブラリ ターゲットを作成し、コピー ビルド フェーズを使用して、@rpath と @executable_path と @loader_path でパスを設定します ...
これが私が遭遇したものです:
dylib がターゲット アプリと同じディレクトリにコピーされている場合 (宛先を「製品ディレクトリ」に設定することにより)、ターゲット アプリをコンパイルして実行するようにビルドできますが、これはアプリが Xcode 内で実行されている場合にのみ機能します。ファインダーからアプリを実行すると、/usr/lib で dylib が検索されます。
宛先設定を変更するときの注意: 以前のビルドの場所にコピーされたファイルは、ビルドを再度変更しても削除されません。これにより、解決策がないのに解決策があると何度か考えさせられました。
「ライブラリ検索パス」はリンク時に期待どおりに機能するように見えますが、「動的ライブラリ インストール名」と「実行パス検索パス」を設定しても、コードが実行時にのみ /usr/lib を検索するのを止めないようには見えません。それらはまったく効果がないようです。
では、これらのパス変数を設定しても効果がないのはなぜですか? また、ランタイム検索パスを設定するにはどうすればよいでしょうか?