i-mobile & Cocos2d-x で Xcode 12 のビルドエラー対応
はじめに
Xcode 12 以降で、実機では問題なくビルドが通るのに、シミュレータではエラーになる現象が発生しました。
building for iOS Simulator, but linking in object file built for iOS, for architecture arm64
i-mobile や Cocos2d-x, Firebase 等の、サードパーティ製ライブラリで同様のエラーになるようです。
対処
1. VALID_ARCHS を削除
Project Navigator からプロジェクトを選択し、[TARGETS] > [Build Settings] > [User-Defined] の「VALID_ARCHS: arm64, armv7」をキーごと削除します。
2. Excluded Architectures に arm64 を追加
Project Navigator からプロジェクトを選択し、[PROJECT] > [Build Settings] > [Architectures] > [Excluded architectures] の Debug と Release の両方に、「Any iOS Simulator SDK: arm64」を追加します。
3. ライブラリの設定
上記 1, 2 の処置を、Cocos2d-x ライブラリ(cocos2d_libs)にも行います。
4. クリーンビルド
クリーン
[Product] > [Clean Build Folder] でキャッシュを削除します。
キャッシュの削除
Xcode を Quit Xcode (Command + Q) で終了させ、
以下のキャッシュを削除します。
rm -rf ~/Library/Developer/Xcode/DerivedData/プロジェクト名*
rm -rf ~/Library/Caches/com.apple.dt.Xcode
ビルド
Xcode を立ち上げて、[Product] > [Build] を実行すればビルドが通ると思います。