ライブラリだけ予めビルドしておく


cocos newコマンドで新しくプロジェクトを作ると、ライブラリを含め全てソースからビルドするように設定されます。ライブラリ内の細かい動きまで調整できて便利なんですが、普段ほとんど編集しない割にはちょっとcleanしたいときなんかに1からフルビルドされてしまうのは、なにかと面倒です。
ver3.3辺りからライブラリだけをビルドするツールが同梱されているので、それの使い方を紹介します。

gen-prebuilt

tools/gen-prebuilt以下にスクリプトが入っています。READMEの通りにgen_prebuilt_libs.py => module_organize.pyを順に実行すればヘッダとオブジェクトが生成されます。前者はライブラリのビルドを、後者はライブラリと必要なヘッダをまとめてくれますが、プロジェクトの構成次第では後者は不要かもしれません。ちなみにcocos2d-x3.6とxcode6.4で試したところエラーが出たので少し修正しました。

diff --git a/frameworks/cocos2d-x/build/cocos2d_libs.xcodeproj/project.pbxproj b/frameworks/cocos2d-~
index dfc045f..a64c03e 100644
--- a/frameworks/cocos2d-x/build/cocos2d_libs.xcodeproj/project.pbxproj
+++ b/frameworks/cocos2d-x/build/cocos2d_libs.xcodeproj/project.pbxproj
@@ -9524,7 +9524,6 @@
                                SDKROOT = iphoneos;
                                TARGETED_DEVICE_FAMILY = "1,2";
                                USER_HEADER_SEARCH_PATHS = "$(inherited) $(SRCROOT)/../external/free~
-                               VALID_ARCHS = "arm64 armv7";
                        };
                        name = Debug;
                };
@@ -9556,7 +9555,6 @@
                                SDKROOT = iphoneos;
                                TARGETED_DEVICE_FAMILY = "1,2";
                                USER_HEADER_SEARCH_PATHS = "$(inherited) $(SRCROOT)/../external/free~
-                               VALID_ARCHS = "arm64 armv7";
                        };
                        name = Release;
                };
diff --git a/frameworks/cocos2d-x/tools/gen-prebuilt/build_config.json b/frameworks/cocos2d-x/tools/~
index 0c250ef..9563a83 100644
--- a/frameworks/cocos2d-x/tools/gen-prebuilt/build_config.json
+++ b/frameworks/cocos2d-x/tools/gen-prebuilt/build_config.json
@@ -2,11 +2,11 @@
     "xcode_proj_info" : {
         "build/cocos2d_libs.xcodeproj" : {
             "outputdir" : "prebuilt",
-            "targets" :[ "build all libs" ]
+            "targets" :[ "libcocos2d" ]
         },
         "cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj" : {
             "outputdir" : "prebuilt",
-            "targets" : [ "build all lualibs" ]
+            "targets" : [ "libluacocos2d" ]
         }
     },
     "win32_proj_info" : {

(※追記)実機でビルドする場合などのために、Build Active Architecture OnlyをNOにしておきます。

diff --git frameworks/cocos2d-x/build/cocos2d_libs.xcodeproj/project.pbxproj frameworks/cocos2d-x/build/cocos2d_libs.xcodeproj/project.pbxproj
index b66e1f8..a64c03e 100644
--- frameworks/cocos2d-x/build/cocos2d_libs.xcodeproj/project.pbxproj
+++ frameworks/cocos2d-x/build/cocos2d_libs.xcodeproj/project.pbxproj
@@ -9521,7 +9521,6 @@
                    "\"$(SRCROOT)/../external/websockets/prebuilt/ios\"",
                    "\"$(SRCROOT)/../external/chipmunk/prebuilt/ios\"",
                );
-               ONLY_ACTIVE_ARCH = NO;
                SDKROOT = iphoneos;
                TARGETED_DEVICE_FAMILY = "1,2";
                USER_HEADER_SEARCH_PATHS = "$(inherited) $(SRCROOT)/../external/freetype2/include/ios $(SRCROOT)/../external/curl/include/ios $(SRCROOT)/../external/webp/include/ios $(SRCROOT)/../external/tiff/include/ios $(SRCROOT)/../external/jpeg/include/ios $(SRCROOT)/../external/png/include/ios $(SRCROOT)/../external/websockets/include/ios $(SRCROOT)/../external/chipmunk/include/chipmunk $(SRCROOT)/../external/freetype2/include/ios/freetype2";
diff --git frameworks/cocos2d-x/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj frameworks/cocos2d-x/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj
index df1cdb5..f3bd4c3 100644
--- frameworks/cocos2d-x/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj
+++ frameworks/cocos2d-x/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj
@@ -1256,7 +1256,6 @@
                HEADER_SEARCH_PATHS = "";
                IPHONEOS_DEPLOYMENT_TARGET = 5.1;
                LIBRARY_SEARCH_PATHS = "$(SRCROOT)/../../../../external/lua/luajit/prebuilt/ios";
-               ONLY_ACTIVE_ARCH = NO;
                PRODUCT_NAME = "libluacocos2d iOS";
                SDKROOT = iphoneos;
                TARGETED_DEVICE_FAMILY = "1,2";

リンクする

あとはリンクするだけです。まず元々あったライブラリへの参照を消します。

ファイル自体は残しておかないとなので、MoveTrashせずにRemoveReferenceします。依存関係なんかもxcodeが良しなにやってくれるので消すだけで大丈夫です。
あとは他のライブラリと同様にTARGETS => General => Linked Frameworks and Librariesから追加します。