cocos2d-x 3.4のStatic LibraryをXcode 6.2で作成してbuildを早くする手順

cocos2d-x-rapid-build-eye-catch

公開日: 

cocos2d-xはプロジェクトを作成すると、そのプロジェクト内にライブラリも同梱して作成される。

そのため、クリーンビルドするたびにcocos2d-xのライブラリもビルドし始めるため、非常にビルドに時間がかかってしょうがない。

それを解消すべく、あらかじめライブラリはプリビルドして作っておいて毎回ライブラリのビルドは走らせないtipsのご紹介。

 

sponcer link

 

分かる人は読み飛ばしてもいいけど、とりあえずプロジェクト作成するところから説明。(cocos2d-xの環境設定はしてあるものとする)

カレントディレクトリにHelloWorldというディレクトリが作成される。

とりあえずxcodeprojを開く

 

ビルド設定の変更

cocos2d_libs.xcodeprojのプロジェクトのBuild Settingsで以下のように設定する。

Architectures : Standard Architectures (デフォルトでこれになってると思いますが)

Build Active Architecture Only : NO

また、libcocos2d iOSターゲットのBuildSettingsのValid Architecturesにてarmv7s、i386、x86_64を追記する。

Valid Architectures : arm64 armv7 armv7s i386 x86_64

cocos2d-x-project-setting

ちなみにValid Architecturesを設定しないとrake libコマンド実行時に以下のようなエラーで怒られたりした。

[BEROR]No architectures to compile for (ARCHS=i386 x86_64, VALID_ARCHS=arm64 armv7).

また、StaticLibraryを使ったビルドをした時に対応したCPUのアーキテクチャのものが含まれてなくてビルド出来ねーよと怒られる。

arm64 armv7 armv7sは実機でのCPUで、i386 x86_64はシミュレータでのCPUになる。

cf : iOS デバイス一覧表

どっちでも使えるように今回は全部ぶっこんどきました。

 

Rakefileを使ってStaticLibraryを作る

viなど、エディターはなんでもいいのでcocos2d-xのライブラリがあるディレクトリ以下にRakefileを作成する。

 

cocos2d-x-3.2のcocos2d_libs.xcodeprojのプレビルド

上記サイトを参考にRakefileは以下のように作成した。

参考サイトとの違いとしては、 cocos2d-x 3.4ではターゲット名が「build all libs iOS」から「libcocos2d iOS」になった。

3.4からターゲットがひとつに纏められたのでこのようなターゲット名になっている模様。らくちん。

また、xcode6.2の場合はシミュレータが8.2になっているのでそこも変えてあげている。

さらに、armv7sが指定しないとなぜかはいってくれなかったので、-archオプションで意図的に各CPUアーキテクチャの指定を入れている。

 

Rakefileがあるディレクトリに移動してビルドを始める

rake libは恐ろしく時間がかかったりします。

プロジェクトにStaticLibraryを追加する

早速作成できたlibcocos2d iOS.aをプロジェクトに追加します。今回はFrameworksに適当に突っ込んどきました。

cocos2d-x-add-static-library

 

 

cocos2d-xのライブラリのターゲットはビルドするときにもう用済みなのでlibcocos2d Macとlibcocos2d iOSのターゲットは削除してしまいます。

cocos2d-x-delete-target

プロジェクトファイルごと消せばいいじゃんというお話もあるかと思いますが、ソースを追うこともあるかもしれないので、このままプロジェクトファイル自体は残しておきます。

 

次に。プロジェクトに「libcocos2d iOS.a」を追加した時に自動的にBuild Phasesのライブラリに追加してくれるのですが、

前のゴミが残っていて、ちょっと気持ち悪いのでこちらも削除しておきます。

メインのプロジェクト設定 -> 対象Tragets -> Build Phases -> Link Binary With Librariesの中に、真っ赤になった「libcocos2d iOS.a」があるので選択して下の「-」ボタンから削除します。

cocos2d-x-delete-old-library

 

 

爆速ビルドの体感

これでビルドの準備ができました。さっそく。Cmd+Rでビルド実行してみましょう。

すると。。。

 

なんということでしょう~。

あんなに長かったビルド時間が速攻で終わって無事にシミュレータが起動するようになりました。

 

まさに爆速!!

 

これで長かったビルド時間との戦いとも決着をつけれます!

めでたしめでたし。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • David Hung

    Hi, I am an indie game developer from Taiwan. Thank you so much!!!!!!!!! You really save my life. May I translate your post to Chinese version? I think many developers like me will need this tutorial… thanks again!

    • mogmet

      Thank you for your comment. I’m glad to save you!
      I’ll try to translate my post to Chinese when I can find the time.

      • David Hung

        no, no need, I mean I will translate your post to Chinese. In fact, I have already done it, and post it in my blog. :D
        http://fstoke.me/blog/?p=4067

        Thanks! ^^

        • mogmet

          Oh, I’m sorry. I misunderstood. Thank you for translation!

PAGE TOP ↑