MacOSX:するかという依存関係への地元のバンドル?
-
21-09-2019 - |
質問
私の作成プラグインの応用(dylib)に依存する複数の図書館です。これらのライブラリの設置システムが保証されないインストールする必要がありますユーザーのシステム。思うということが必要バンドルの依存関係と一緒に願います。
これらが使用できます otool
リストまたは変更の経路を他のdylibs.ることができるようになるフォルダを作成したバンドルマプラグイン用に必要なすべての依存関係.
しかし、この手のように思えるので時間がかかり、ダムです。があるの費用を自動化です。
うになっているので間違っていて、ありが明らかなアプローチはこの問題なのか。
編集 を作成しました スクリプト この動ものです。
解決
install_name_toolを使用して、dylibに相対パスを使用してください。あなたが一度にそれらを設定し、インストール時に、あなたのライブラリを変更することなく、そのディレクトリの任意の場所にインストールすることができます。
その方法あなたが依存する他のdylibsの相対的な位置を設定するためにinstall_name_toolを使用し、その後、一つのフォルダにあなたのdylibの依存関係のすべてを配置する必要があります。あなたのライブラリーlibmyfoo.dylibがlibbar.dylibに依存しているとします。
install_name_tool -change "/Whatever/full/path/libbar.dylib" "@loader_path/libbar.dylib" libmyfoo.dylib
この方法で、あなたのライブラリーは常にlibmyfoo.dylibが配置されている同じディレクトリにlibbar.dylibを探します。
彼らはお互いに依存している場合は、また、他のdylibsの一部にinstall_name_toolを実行する必要があるかもしれません。
用心、 install_name_toolのドキュメントのポイントアウト「大きいとき、インストール名またはrpaths仕事にこのツールのバイナリは、LD(1)で構築しなければならないオプションを-headerpad_max_install_names。」、構築時にその-headerpad_max_install_names
コマンドラインオプションを含めるようにしてくださいあなたのライブラリます。
@loader_path
は、この場合、あなたのlibmyfoo.dylibには、dylibをロードするために使用されるバイナリに相対的です。使用@executable_path
ライブラリロードシーケンスを開始した実行可能ファイルへの相対的なライブラリを検索する場合。
他のヒント
る完全なクリストファーの答えは、このリンクを有用資源
Macdylibbundler の要求されたまさに行い便利な小さなツールです。 OSX用のバイナリを配布するとき、それは確かに私の命を救っています。