QuickLookジェネレーターを作成しようとしています。このために、私が作成したフレームワークに対してリンクする必要があります。ただし、上記のフレームワークにリンクするとすぐに、次のようにqlmanage
言ってプラグインの読み込みを拒否します。
[ERROR] Can't load plug-in at /path/to/my-ql.qlgenerator: The bundle “my-ql” couldn’t be loaded because it is damaged or missing necessary resources.
リンク、フレームワーク、QuickLookに関連するすべてのチュートリアルを読みましたが、答えが見つかりませんでした。
私がこれまでに見つけた/除外したもの
- アーキテクチャ:フレームワークを32ビットバイナリとして含めると、リンクプロセス全体に障害が発生するため、これは問題ではないようです。
- フレームワークがプラグインのバンドルにコピーされることを確認しました
Contents/Frameworks
。 - フレームワークのインストールパスはに設定されています
@executable_path/../Frameworks
また、別のアプリケーションでフレームワークを使用する場合、すべてがうまくいきます。私が理解できる唯一の可能な説明は次のとおりです。実行するqlmanage
と、@executable_path
実際にはそのバイナリを指しているため、フレームワークが見つかりません。この場合、プラグインに相対的な場所を許可するようにインストールパスを設定するにはどうすればよいですか?フレームワークをグローバルにインストールしたくありません。
編集
otool -L
構築されたQuickLookプラグインでは、次のようになります。
/System/Library/Frameworks/QuickLook.framework/Versions/A/QuickLook (compatibility version 1.0.0, current version 327.4.0)
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 38.0.0)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 44.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 550.29.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 15.0.0)
@executable_path/../Frameworks/PESHandler.framework/Versions/A/PESHandler (compatibility version 1.0.0, current version 1.0.0) <== *this is my framework*
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0)
otool -D
私のフレームワークではこれが得られます:
@executable_path/../Frameworks/PESHandler.framework/Versions/A/PESHandler
フレームワークはガベージコレクションを必要としません。