殴り書きで初投稿!
とりあえず備忘録として書き留めておきます。
「Ecipseでcocos2d-xのビルドが遅い!」って思ったことありませんか?
chipmunkもBox2dも今回は使ってないのになぁ〜、ビルド対象に含まれてる。
ちょっとだけでもビルド時間を減らしたい、バイナリのサイズを減らしたい方は読んでみてください。
前提条件
- CCPhysicsSpriteクラスを使用していないこと
- chipmunk, Box2dを使用していないこと
ビルドから除外する方法
cocos2d-2.1rc0-x-2.1.3/extensionsのAndroid.mkを変更する。
- CCPhysicsDebugNode.cpp,CCPhysicsSprite.cppをビルド対象からはずす。
- Box2d, chipmunkをビルド対象からはずす。
ただしApplication.mkのAPP_CPPFLAGSの内容次第ではビルド対象にするようにしています。
(GNU makeの書き方はよくわからないので、引数の値に関係なく定義されていたらビルド対象にしています)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := cocos_extension_static
LOCAL_MODULE_FILENAME := libextension
LOCAL_SRC_FILES := AssetsManager/AssetsManager.cpp \
CCBReader/CCBFileLoader.cpp \
CCBReader/CCBReader.cpp \
CCBReader/CCControlButtonLoader.cpp \
CCBReader/CCControlLoader.cpp \
CCBReader/CCLabelBMFontLoader.cpp \
CCBReader/CCLabelTTFLoader.cpp \
CCBReader/CCLayerColorLoader.cpp \
CCBReader/CCLayerGradientLoader.cpp \
CCBReader/CCLayerLoader.cpp \
CCBReader/CCMenuItemImageLoader.cpp \
CCBReader/CCMenuItemLoader.cpp \
CCBReader/CCNodeLoader.cpp \
CCBReader/CCNodeLoaderLibrary.cpp \
CCBReader/CCParticleSystemQuadLoader.cpp \
CCBReader/CCScale9SpriteLoader.cpp \
CCBReader/CCScrollViewLoader.cpp \
CCBReader/CCSpriteLoader.cpp \
CCBReader/CCBAnimationManager.cpp \
CCBReader/CCBKeyframe.cpp \
CCBReader/CCBSequence.cpp \
CCBReader/CCBSequenceProperty.cpp \
CCBReader/CCBValue.cpp \
CCBReader/CCData.cpp \
CCBReader/CCNode+CCBRelativePositioning.cpp \
GUI/CCControlExtension/CCControl.cpp \
GUI/CCControlExtension/CCControlButton.cpp \
GUI/CCControlExtension/CCControlColourPicker.cpp \
GUI/CCControlExtension/CCControlHuePicker.cpp \
GUI/CCControlExtension/CCControlSaturationBrightnessPicker.cpp \
GUI/CCControlExtension/CCControlSlider.cpp \
GUI/CCControlExtension/CCControlSwitch.cpp \
GUI/CCControlExtension/CCControlUtils.cpp \
GUI/CCControlExtension/CCInvocation.cpp \
GUI/CCControlExtension/CCScale9Sprite.cpp \
GUI/CCControlExtension/CCControlPotentiometer.cpp \
GUI/CCControlExtension/CCControlStepper.cpp \
GUI/CCScrollView/CCScrollView.cpp \
GUI/CCScrollView/CCTableView.cpp \
GUI/CCScrollView/CCTableViewCell.cpp \
GUI/CCScrollView/CCSorting.cpp \
GUI/CCEditBox/CCEditBox.cpp \
GUI/CCEditBox/CCEditBoxImplAndroid.cpp \
network/HttpClient.cpp \
LocalStorage/LocalStorageAndroid.cpp \
spine/Animation.cpp \
spine/AnimationState.cpp \
spine/AnimationStateData.cpp \
spine/Atlas.cpp \
spine/AtlasAttachmentLoader.cpp \
spine/Attachment.cpp \
spine/AttachmentLoader.cpp \
spine/Bone.cpp \
spine/BoneData.cpp \
spine/Json.cpp \
spine/RegionAttachment.cpp \
spine/Skeleton.cpp \
spine/SkeletonData.cpp \
spine/SkeletonJson.cpp \
spine/Skin.cpp \
spine/Slot.cpp \
spine/SlotData.cpp \
spine/extension.cpp \
spine/spine-cocos2dx.cpp
ifneq (,$(findstring CC_ENABLE_CHIPMUNK_INTEGRATION,$(APP_CPPFLAGS)))
$(info ENABLE Chipmunk Physics)
LOCAL_SRC_FILES += physics_nodes/CCPhysicsDebugNode.cpp
LOCAL_SRC_FILES += physics_nodes/CCPhysicsSprite.cpp
else
$(info DISABLE Chipmunk Physics)
endif
ifneq (,$(findstring CC_ENABLE_BOX2D_INTEGRATION,$(APP_CPPFLAGS)))
$(info ENABLE Box2d Physics)
LOCAL_SRC_FILES += physics_nodes/CCPhysicsDebugNode.cpp
LOCAL_SRC_FILES += physics_nodes/CCPhysicsSprite.cpp
else
$(info DISABLE Box2d Physics)
endif
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_curl_static
ifneq (,$(findstring CC_ENABLE_BOX2D_INTEGRATION,$(APP_CPPFLAGS)))
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
endif
ifneq (,$(findstring CC_ENABLE_CHIPMUNK_INTEGRATION,$(APP_CPPFLAGS)))
LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static
endif
# LOCAL_CFLAGS += -DCC_ENABLE_CHIPMUNK_INTEGRATION=1
# LOCAL_EXPORT_CFLAGS += -DCC_ENABLE_CHIPMUNK_INTEGRATION=1
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) \
$(LOCAL_PATH)/CCBReader \
$(LOCAL_PATH)/GUI/CCControlExtension \
$(LOCAL_PATH)/GUI/CCScrollView \
$(LOCAL_PATH)/network \
$(LOCAL_PATH)/LocalStorage
include $(BUILD_STATIC_LIBRARY)
$(call import-module,cocos2dx)
$(call import-module,CocosDenshion/android)
$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)
ifneq (,$(findstring CC_ENABLE_BOX2D_INTEGRATION,$(APP_CPPFLAGS)))
$(call import-module,external/Box2D)
endif
ifneq (,$(findstring CC_ENABLE_CHIPMUNK_INTEGRATION,$(APP_CPPFLAGS)))
$(call import-module,external/chipmunk)
endif
もしchipmunkもしくはBox2dを有効にしたいときは、自分のプロジェクトのApplication.mkを以下のように追記します。
# chipmunk使うときは
APP_CPPFLAGS += -DCC_ENABLE_CHIPMUNK_INTEGRATION=1
# Box2d使うときは
APP_CPPFLAGS += -DCC_ENABLE_BOX2D_INTEGRATION=1
条件文ではAPP_CPPFLAGSしか見ていないので、他の箇所に設定するとうまくうごきません。
さらに自分のアプリプロジェクトのAndroid.mkからBox2dとchipmunkの設定をコメント化する。
(jniフォルダにあるAndroid.mk)
# LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
# LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static
# $(call import-module,external/Box2D)
# $(call import-module,external/chipmunk)
殴り書きですが誰かの役にでも立てば。。。
課題
GNU makeの条件文はよく分かりません。
このあたり詳しい人がいれば、もっとうまくかける方法を教えてください。