アプリケーションで使用されているフレームワークに加えて、アプリケーションバンドル内に含まれているいくつかのXPCサービスがあります。すべてのバンドルを、アプリケーションのFrameworksフォルダー内に含まれるフレームワークの単一のコピーにリンクするにはどうすればよいですか(フレームワークをすべてのバンドルにコピーするのではありません)?すべてのサービスとアプリケーションはサンドボックス化されているため、XPCサービスがサンドボックスの外部にあるため、メインのアプリバンドルのフレームワークにアクセスできるかどうかはわかりません。
質問する
1013 次
2 に答える
4
をご覧になりました@rpath
か?これはすべて、フレームワークのビルド設定を変更できることを前提としています (OS X 10.5 以降をターゲットにする必要があります)。
- フレームワークのインストール パスと名前を設定します。
INSTALL_PATH = @rpath
LD_DYLIB_INSTALL_NAME = @rpath/$(PRODUCT_NAME).$(WRAPPER_EXTENSION)/$(PRODUCT_NAME)
- フレームワークが含まれるように、アプリと XPC の実行パスの検索パスを設定します。
- アプリの場合:
LD_RUNPATH_SEARCH_PATHS = @loader_path/../Frameworks/
- XPC サービスの場合:
LD_RUNPATH_SEARCH_PATHS = @loader_path/../../../../Frameworks
- ランパスの検索パスは、必要に応じて複数の値に設定できます。
- アプリの場合:
詳細については、 @rpath
Dave Dribin の投稿「<a href="http://www.dribin.org/dave/blog/archives/2009/11/15/rpath/" rel="nofollow noreferrer">Using @rpath: Why」を参照してください。 and How」および Mike Ash の金曜日の Q&A 「<a href="http://www.mikeash.com/pyblog/friday-qa-2009-11-06-linking-and-install-names.html" rel="nofollow noreferrer">名前のリンクとインストール」。
編集:私はこれをいくつかのプロジェクトに使用しましたが、うまくいきます。
于 2013-01-14T21:03:29.980 に答える
2
これは、を使用して可能install_name_tool
です。例:
install_name_tool -change @executable_path/../Frameworks/MyFramework.framework/Versions/A/MyFramework @executable_path/../../../../Frameworks/MyFramework.framework/Versions/A/MyFramework "$BUILT_PRODUCTS_DIR/MyApp.app/Contents/XPCServices/com.me.MyApp.SomeXPC.xpc/Contents/MacOS/com.me.MyApp.SomeXPC"
詳細はこちら。
于 2013-01-14T01:34:29.553 に答える