LoginSignup
9
9

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-07-03

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";

リンクする

あとはリンクするだけです。まず元々あったライブラリへの参照を消します。
MyLuaGame_xcodeproj.png
ファイル自体は残しておかないとなので、MoveTrashせずにRemoveReferenceします。依存関係なんかもxcodeが良しなにやってくれるので消すだけで大丈夫です。
あとは他のライブラリと同様にTARGETS => General => Linked Frameworks and Librariesから追加します。
スクリーンショット 2015-07-03 14.22.07.png

9
9
1

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
9
9