LoginSignup
3
3

More than 5 years have passed since last update.

cocos2d-x-3.13.1 の iOS static ライブラリをビルド

Last updated at Posted at 2016-09-15

目的

  1. Cocos2d-x を既存アプリに組み込む準備
  2. Xcode が Cocos2d-x ライブラリ部分に対して表示する警告を見たくない
  3. Cocos2d-x アプリのビルドを速くしたい
    1. cocos new コマンドで作成した Xcode プロジェクトでは、クリーンビルドの度にライブラリ部分も再ビルドする

環境

  1. Mac OS X 10.11.6 (英語)
  2. Xcode 7.3.1
  3. Cocos2d-x 3.13.1

方針

  1. iOS SDK は 9.3
  2. iOS Deployment Target は 8.0
  3. アーキテクチャーは armv7 arm64 i386 x86_64
    1. アーキテクチャーとデバイスの関係
    2. armv7s は external でビルドされてないし armv7 とほとんど差がない模様
  4. bitcode をサポート

手順

cocos2d-x-3.13.1 を展開したディレクトリから

$ cd build

$ xcodebuild -project cocos2d_libs.xcodeproj -scheme "libcocos2d iOS" -configuration Release -sdk iphoneos9.3 \
    clean build ARCHS='armv7' VALID_ARCHS='armv7' IPHONEOS_DEPLOYMENT_TARGET=8.0 \
    TARGET_BUILD_DIR=tmp/arm BUILT_PRODUCTS_DIR=tmp/arm OBJROOT=tmp/arm SYMROOT=tmp/arm \
    OTHER_CFLAGS=-fembed-bitcode

$ xcodebuild -project cocos2d_libs.xcodeproj -scheme "libcocos2d iOS" -configuration Release -sdk iphoneos9.3 \
    clean build ARCHS='arm64' VALID_ARCHS='arm64' IPHONEOS_DEPLOYMENT_TARGET=8.0 \
    TARGET_BUILD_DIR=tmp/arm64 BUILT_PRODUCTS_DIR=tmp/arm64 OBJROOT=tmp/arm64 SYMROOT=tmp/arm64 \
    OTHER_CFLAGS=-fembed-bitcode

$ xcodebuild -project cocos2d_libs.xcodeproj -scheme "libcocos2d iOS" -configuration Release -sdk iphonesimulator9.3 \
    clean build ARCHS='i386' VALID_ARCHS='i386' IPHONEOS_DEPLOYMENT_TARGET=8.0 \
    TARGET_BUILD_DIR=tmp/i386 BUILT_PRODUCTS_DIR=tmp/i386 OBJROOT=tmp/i386 SYMROOT=tmp/i386 \
    OTHER_CFLAGS=-fembed-bitcode

$ xcodebuild -project cocos2d_libs.xcodeproj -scheme "libcocos2d iOS" -configuration Release -sdk iphonesimulator9.3 \
    clean build ARCHS='x86_64' VALID_ARCHS='x86_64' IPHONEOS_DEPLOYMENT_TARGET=8.0 \
    TARGET_BUILD_DIR=tmp/x86_64 BUILT_PRODUCTS_DIR=tmp/x86_64 OBJROOT=tmp/x86_64 SYMROOT=tmp/x86_64 \
    OTHER_CFLAGS=-fembed-bitcode

$ lipo -create -output "libcocos2d iOS.a" \
    "tmp/arm/libcocos2d iOS.a" \
    "tmp/arm64/libcocos2d iOS.a" \
    "tmp/i386/libcocos2d iOS.a" \
    "tmp/x86_64/libcocos2d iOS.a"

$ rm -rf tmp
  1. libcocos2d iOS.a は 313.2MB
  2. これだけだと cocos2d-x-3rd-party-libs-bin で bitcode が有効になっていないので利用時に以下のエラーが出てしまう

    1. cocos2d-x-3rd-party-libs-src を bitcode 有効にしてビルドしてから上記手順を実施すると bitcode のエラーがなくなる
    ld: 'libcocos2d-iOS.a(ftbase.ios8_armv7.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7
    

確認

  1. cocos new コマンドで作成した Xcode プロジェクトから cocos2d_libs.xcodeproj サブプロジェクトを Delete
    1. ビルドエラーが起きる状態になる
  2. 作成した libcocos2d iOS.a を Finder から Xcode で開いたプロジェクトの Frameworks へドラッグ&ドロップ
    1. クリーンビルドが早くなった

参考

  1. Build cocos2d-x fat static library
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3