私は最近Xcode 7ベータ版をダウンロードしましたが、Xcodeは私のCライブラリの一部がBitCodeにコンパイルされていないことを訴えています。 iOSと互換性のあるBitCodeを生成するようClangに指示するにはどうすればよいですか? stackoverflowでも同様の回答を見ましたが、iOS向けのBitCodeライブラリの作成にそれらが当てはまるかどうかはわかりません。
編集:
正しい設定-fembed-bitcodeを使用していますが、アーカイブしようとすると次のエラーが表示されます:ld:warning:ignoring file XXXX/XXXX -fembed-bitcode-markerを使用するとアーカイブできますが、エラーが発生します。XX/ XXはビットコードマーカーのみで構築されているため、完全なビットコードバンドルを生成できませんでした。ライブラリは、ビットコードを有効にしてXcodeアーカイブビルドから生成する必要があります。
何が間違っているのかについてのアイデアはありますか?ライブラリは正常にコンパイルされていますが、アーカイブできません。単純な追加関数を作成し、ライブラリに追加しましたが、同じ症状が出るので、コンパイルしているライブラリではありません。
編集2:ビットコードを使用してarm64とarmv7の両方のバージョンをビルドし、それらを一緒にリポする必要があります。ビットコードを使用しても、アーカイブ時に太いライブラリが必要になることはありません。ソース: https://forums.developer.Apple.com/message/25132#25132
静的ライブラリを構築する場合、ビットコード生成のために次を追加する必要があります。
-fembed-bitcode
動的ライブラリの場合、さらにリンクする必要があります
-fembed-bitcode
注:このコマンドはXcode7 +でのみ使用可能です
-fembed-bitcode-marker
の使用に関する受け入れられた回答に関して
-fembed-bitcode-markerオプションを使用した通常のビルドでは、実際のコンテンツなしで最小サイズの埋め込みビットコードセクションが生成されることに注意してください。これは、ビルドプロセスを遅くすることなく、ビルドのビットコード関連の側面をテストする方法として行われます。実際のビットコードコンテンツは、アーカイブビルドを行うときに含まれます。
bwilson Apple Staff。 https://forums.developer.Apple.com/thread/3971#12225
もう少し詳しく言うと:
-fembed-bitcode-marker
は、アーカイブのビルド後にビットコードがバイナリのどこにあるかを単にマークします。-fembed-bitcode
は実際に完全なビットコードの生成と埋め込みを行うため、これは静的ライブラリの構築に使用する必要があるものです。-fembed-bitcode-marker
でビルドします-fembed-bitcode
でのみビルドします(これはAppleにのみ必要です)。-fembed-bitcode
をその他のCフラグに追加しても問題が解決しない場合は、[ビルドオプション]で[ビットコードを有効にする]を検索し、[いいえ]に設定します。これにより、適切にアーカイブできます。
必要なのは-fembed-bitcodeです。 ENABLE_BITCODEを有効にすると、Xcodeは、通常のビルドの場合は-fembed-bitcode-markerで、アーカイブビルドの場合は-fembed-bitcodeでビルドされます。 1つのオプションは、アーカイブのビルド後にビットコードがバイナリ内にあることを単に「マーク」し、新しいビットコードルールを適用します。 。
池田翔のBITCODE処理のガイドも役立つかもしれません:
静的ライブラリを構築していて、ビットコードを有効にしたい場合は、(1)ENABLE_BITCODE = YESだけでは不十分な場合があります。
(2)設定-fembed-bitcode
以下のエラーは、Teamcityでビルドされたときに複数のファイルに対してまだスローされていました
bitcode bundle could not be generated because ‘/path/fileInYourStaticLib.a(fileInYourStaticLib.o)’ was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build for architecture arm64
上記のステップ(1)および(2)に加えて、最終的に問題を解決するのに役立ついくつかのヒント/考慮事項
「PROJECT」およびすべての「TARGETS」で変数「Other C Flags」を「-fembed-bitcode」に設定してください。
静的ライブラリを作成しようとしているプロジェクトが複数ある場合は、すべてのプロジェクトに"-fembed-bitcode"
有効。
On Build Settings, click on the + sign at the top to add a user-defined build setting with the name
BITCODE_GENERATION_MODE, and set Debug to
マーカー, Release to
bitcode
上記の手順が機能しない場合は、このオプションを試すこともできます。 On Build Settings -> Other C flags, set Debug to
- fembed-bitcode-marker, and Release to
- fembed-bitcode
このブログは大きな助けになりました https://medium.com/@heitorburger/static-libraries-frameworks-and-bitcode-6d8f784478a9
また、上記の変更を行うたびに、DerivedDataを削除し、XCodeプロジェクトをクリーンアップし、場合によってはXCodeを終了して再起動してください。