ライブラリだけ予めビルドしておく
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から追加します。
Author And Source
この問題について(ライブラリだけ予めビルドしておく), 我々は、より多くの情報をここで見つけました https://qiita.com/blankblank/items/02c65c1aef12ed5abbbe著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .