Cocos2d-x 静的ライブラリの作り方

Cocos2d-x のプロジェクトは、ビルドにとても時間がかかります。
これを改善するために、Cocos2d-x のライブラリを予めビルドしておき、静的ライブラリとして利用します。

作業環境

Xcode 7.3
Cocos2d-x 3.10

1.プロジェクトを作る

ターミナルを開き、コマンドを入力します。
$ cocos new TestingProject -p com.Testing.TestingProject -l cpp

2.ライブラリ用のプロジェクトを開く

作成されたプロジェクトのフォルダ内
TestingProject/cocos2d/build/cocos2d_libs.xcodeproj
を Xcode で開きます。

3.Preferences を変える

上部メニューより Xcode -> Preferences... を開きます。
Locations タブを選択し、Derived Data を Default から Relative に変更します。


4.Build Settings を変える

TARGETS -> Build Settings -> Architectures -> Build Active Architecture Only -> Debug
この値を Yes から No に変更します。


5.デバイス用にビルド

Xcode ウィンドウ上部ツールバーより libcocos2d iOS > Generic iOS Device を選択し、ビルドします。結構時間がかかります。


6.シミュレーター用にビルド

Xcode ウィンドウ上部ツールバーより libcocos2d iOS > いずれかのシミュレーター を選択し、ビルドします。こちらも時間がかかります。


7.ファイルを確認

cocos2d_libs.xcodeproj がある場所に DerivedData フォルダが作成されています。
階層を辿って、以下2つのファイルを確認します。
DerivedData/cocos2d_libs/Build/Products/Debug-iphoneos/libcocos2d iOS.a
DerivedData/cocos2d_libs/Build/Products/Debug-iphonesimulator/libcocos2d iOS.a


8.ターミナルを開き Products まで移動する

コマンドを入力し、Products まで移動します。
$ cd /Users/username/TestingProject/cocos2d/build/DerivedData/cocos2d_libs/Build/Products

9.ライブラリを作る

ビルドした2つのライブラリを合体します。
ターミナルでコマンドを入力します。
※「libcocos2d-x 3.10 iOS.a」は合体後の名前なので、自由に変更可能です。
lipo -create -output "libcocos2d-x 3.10 iOS.a" "Debug-iphoneos/libcocos2d iOS.a" "Debug-iphonesimulator/libcocos2d iOS.a"

10.合体したライブラリを移動する

libcocos2d-x 3.10 iOS.a を DerivedData フォルダ外の場所に移動します。
/Users/username/Library/libcocos2d-x 3.10 iOS.a

11.Xcode の設定を戻す

3で変更した Derived Data の Relative を Default に戻します。

12.プロジェクト内の Cocos2d を削除します。

最初に作ったプロジェクトを開きます。
不要になった Cocos2d サブプロジェクトを削除します。


13.ライブラリをプロジェクトに追加する

先ほど作った libcocos2d-x 3.10 iOS.a を追加する


14.ライブラリのパスを設定する

libcocos2d-x 3.10 iOS.a があるフォルダのパスを
TARGETS -> Build Settings -> Search Paths -> Library Search Paths
に追加します。


15.ビルドして実行する

ビルドして時間が短縮されていることを確認します。

16.不要なファイルを削除する

libcocos2d-x 3.10 iOS.a を移動した場合、7で作られた DerivedData フォルダは削除できます。

参考

http://cocos2d-objc.org/migrating-to-x/creating-a-fat-static-library/