3

複数の Xcode プロジェクト間でコードを共有しようとしています。プロジェクト内での静的ライブラリ サブプロジェクトの作成に関する Apple のメモに従いました。

http://developer.apple.com/library/ios/technotes/iOSStaticLibraries/iOSStaticLibraries.pdf

これはうまくいきます!ただし、自分のプロジェクトを使用して同じ手順に従うと、静的ライブラリで公開したヘッダー ファイルがアプリ内のコードで見つからないことがわかりました。

これは、私のプロジェクトがカスタム ビルド構成を使用しているためです。アドホック ビルド、App Store ビルドなど用に 1 つ持っています。

たとえば、「Ad Hoc」というビルド構成を使用してプロジェクトをビルドすると、静的ライブラリ サブプロジェクトがリリース構成をビルドし、そのパブリック ヘッダーを「Release」というフォルダーにコピーします。その後、メイン プロジェクトはビルドに失敗し、スタティック ライブラリからインポートしているヘッダーが見つからないと不平を言います。エラーは Issue Navigator に次のように表示されます: レキシカルまたはプリプロセッサの問題

私の質問は次のとおりです。静的ライブラリを、ライブラリにはないビルド構成を持つプロジェクトのサブプロジェクトとしてどのように設定しますか?

4

1 に答える 1

14

カスタム プロジェクト テンプレートを作成しているときに、この問題に遭遇しました。

アーカイブを使用するすべてのビルド構成の「ヘッダー検索パス」と「ユーザー ヘッダー検索パス」に「$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)」を追加し、「再帰的」に設定されていることを確認します。非再帰的」。これにより、ビルド ディレクトリの "Release" ディレクトリでヘッダー ファイルを検索するようアプリに指示します。

問題は、デバッグ ビルドの場合、すべてのヘッダー ファイルが派生データの下の単一のディレクトリにコピーされることです。ただし、ファイルをアーカイブすると、ビルド構成にちなんで名付けられたフォルダーにコピーされます。したがって、「アドホック」ビルドを実行すると、すべてのファイルが「アドホック」フォルダーにコピーされますが、静的ライブラリ ファイルは「リリース」フォルダーにコピーされます。これらのフォルダーは隣り合って配置されており、そうするように指示されない限り、ヘッダー ファイルは "Ad Hoc" フォルダーの下でのみ検索されます。

これは、問題を修正したプロジェクトテンプレートのGitHubコミットです https://github.com/reidmain/Xcode-5-Project-Templates/commit/e465aa3d5c82118cc0d5af3a7f6f094d86b1ec63

于 2013-11-01T15:05:10.020 に答える