この問題に対して私が見たそれぞれの解決策は、洗練されていないように見える(アプリケーションのプロジェクトにヘッダーをコピーする)か、非常に単純化されており、些細な状況でのみ機能するようになっています。
短い答え
次のパスをユーザーヘッダー検索パスに追加します
「$(BUILD_ROOT)/../ IntermediateBuildFilesPath / UninstalledProducts」
なぜこれが機能するのですか?
まず、問題を理解する必要があります。通常の状況、つまり、実行、テスト、プロファイル、または分析を行うときに、Xcodeはプロジェクトをビルドし、$ BUILT_PRODUCTS_DIRマクロを介して利用可能なBuild / Products / Configuration / Productsディレクトリに出力を配置します。
静的ライブラリに関するほとんどのガイドでは、パブリックヘッダーフォルダーパスを$ TARGET_NAMEに設定することを推奨しています。つまり、libファイルは$ BUILT_PRODUCTS_DIR /libTargetName.aになり、ヘッダーは$ BUILT_PRODUCTS_DIR / TargetNameに配置されます。アプリに$ BUILT_PRODUCTS_DIRが含まれている限り検索パスにが、インポートは上記の4つの状況で機能します。ただし、アーカイブしようとすると、これは機能しません。
アーカイブの動作は少し異なります
プロジェクトをアーカイブすると、XcodeはArchiveIntermediatesと呼ばれる別のフォルダーを使用します。そのフォルダー内に/ YourAppName / BuildProductsPath / Release-iphoneos /があります。これは、アーカイブを実行するときに$ BUILT_PRODUCTS_DIRが指すフォルダーです。そこを見ると、ビルドされた静的ライブラリファイルへのシンボリックリンクがありますが、ヘッダーのあるフォルダーがありません。
ヘッダー(およびlibファイル)を見つけるには、IntermediateBuildFilesPath / UninstalledProducts /に移動する必要があります。静的ライブラリの場合、スキップインストールをYES に設定するように言われたときのことを覚えていますか?まあこれはあなたがアーカイブを作成するときに設定が持っている効果です。
補足:インストールをスキップするように設定しない場合、ヘッダーはさらに別の場所に配置され、libファイルはアーカイブにコピーされるため、App Storeに送信できる.ipaファイルをエクスポートできません。
何度も検索した後、UninstalledProductsフォルダーに対応するマクロを正確に見つけることができなかったため、「$(BUILD_ROOT)/../ IntermediateBuildFilesPath / UninstalledProducts」でパスを作成する必要があります。
概要
静的ライブラリの場合は、インストールをスキップし、公開ヘッダーが$ TARGET_NAMEに配置されていることを確認してください。
アプリの場合、ユーザーヘッダー検索パスを「$(BUILT_PRODUCTS_DIR)」に設定します。これは通常のビルドでは正常に機能し、「$(BUILD_ROOT)/../ IntermediateBuildFilesPath / UninstalledProducts」はアーカイブビルドで機能します。