プロジェクトで静的ライブラリを使用しようとしています。静的ライブラリは、CoreData、CFNetwork、AddressBookなどのいくつかのフレームワークに依存しています。
静的ライブラリもカテゴリを使用するため、メインプロジェクトの[その他のリンカー設定]で-all_loadリンカーオプションを使用する必要があります。これを有効にすると、メインプロジェクトが静的ライブラリ(CoreData、CFNetwork、AddressBookなど)と同じフレームワークにリンクされていないことに関連する120のエラーが発生します。
開発者が静的ライブラリを使用してそれにリンクすることは非常に不便ですが、それでもライブラリがリンクするすべてのフレームワークにリンクする必要があります。メインプロジェクトが静的ライブラリによってリンクされているすべてのフレームワークに自動的にリンクするように、このプロセスを自動化する方法はありますか?
XCode4.4を使用しています。
編集:より明確にするために、私は次のものを持っています:
StaticLibrary.xcodeproj
- AFNetworking
- files...
- CoreData
- categories for NSManagedObjectContext, for convenience
- AddressBook
- convenience methods for working with contacts
このプロジェクトのターゲットは、[ビルドフェーズ]>[バイナリとライブラリのリンク]で必要なフレームワークにリンクされています。これには、CoreData.framework、AddressBook.frameworkなどが含まれます。
今、私がやりたいのは、このライブラリを私の別のプロジェクトに追加することです。実際、これから作成するすべての新しいプロジェクトにこのライブラリを追加したいので、自分が作成した便利な関数/カテゴリにいつでも簡単にアクセスできます。つまり、ライブラリをプロジェクトに追加してから、.a
ファイルを[ビルドフェーズ]> [バイナリとライブラリのリンク](メインプロジェクトの)に追加します。私はまた、私が知っている他の必要なことはすべて行います(コメントを参照)。
私がしたいこと:メインプロジェクトはライブラリにリンクされているので、ライブラリのすべてのリンクを継承し、メインプロジェクトもCoreData.framework、AddressBook.frameworkなどにリンクされています。
何が起こるか:メインプロジェクトは、ライブラリが必要とするものにリンクされていないため、エラーが発生します。
リンクされたフレームワークを静的ライブラリからメインプロジェクトに自動的に追加する方法はありますか、またはライブラリをCoreDataStaticLibraryなどに分割してから、開発者にCoreData.frameworkと静的ライブラリをプロジェクトに追加するように要求する必要がありますか?毎回ターゲットにしますか?