自分用cocos2d-x初期設定プリセットメモ(Android.mk含む)
自メモ)
自分用のスニペット(cococs2d-x3.0用)
rc1以降、正式版でもAndに関してはほぼ改変がないので*1以下のままで行く感じ。
というかAndのtemplate壊れたままだけどこれ問題ないのかな?*2
◎◎console(cocosコマンド)で動かすための .bash_profile の記述のスニペット
- $HOME/.bash_profile
export JAVA_HOME=`/usr/libexec/java_home -v 1.7` export ANDROID_HOME=$HOME/android-sdks export ANDROID_NDK_HOME=$HOME/android-ndk-r9d export ANDROID_BUILD_VERSION=19.0.3 export PATH=$ANDROID_HOME/platform-tools:$PATH export PATH=$ANDROID_HOME/tools:$PATH export PATH=$ANDROID_HOME/build-tools/$ANDROID_BUILD_VERSION:$PATH export PATH=$ANDROID_NDK_HOME:$PATH
と例えば定義されている場合
export ANDROID_SDK_ROOT=$ANDROID_HOME export NDK_ROOT=$ANDROID_NDK_HOME export COCOS2DX_ROOT=$HOME/cocos2d/cocos2d-x-3.0 export COCOS_CONSOLE_ROOT=$COCOS2DX_ROOT/tools/cocos2d-console/bin export ANT_ROOT=/usr/share/ant/bin //☆☆ export NDK_TOOLCHAIN_VERSION=4.8 export NDK_CCACHE=`which ccache` export PATH=$COCOS_CONSOLE_ROOT:$PATH
- ☆☆は環境により異なる
- ccacheは下記参照
◎◎create projectした後に改変が必要な記述スニペット
CDTの設定自体は下記あたりでOK。
ndk-build NDK_DEBUG=1 NDK_LOG=1 V=1 -j3
詳細は Android NDK – kwLogあたり
MakeFileの書式の話は下記でいいのかな?
- jni/Application.mk
APP_STL := gnustl_static #APP_ABI := armeabi armeabi-v7a x86 APP_ABI := armeabi-v7a x86 APP_PLATFORM := android-9 APP_OPTIM := debug #APP_OPTIM := release ifeq ($(APP_OPTIM),debug) APP_CPPFLAGS := -frtti -DCOCOS2D_DEBUG=1 -std=c++11 -fsigned-char -Wno-literal-suffix LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -ldl -ldebug -llog else APP_CPPFLAGS := -frtti -DCOCOS2D_DEBUG=0 -std=c++11 -fsigned-char -Wno-literal-suffix LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -ldl -llog endif # see http://qiita.com/akerusoft/items/3d5068e8bfe926b03969 # use chipmunk #APP_CPPFLAGS += -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 # use box2d #APP_CPPFLAGS += -DCC_ENABLE_BOX2D_INTEGRATION=1 # .bash_profileで指定しなくてもココでtoolchainの指定可能 NDK_TOOLCHAIN_VERSION=4.8
- jni/Android.mk
LOCAL_PATH := $(call my-dir) PROJECT_DIR := $(LOCAL_PATH)/../ COCOS2DX_ROOT := $(LOCAL_PATH)/../../cocos2d include $(CLEAR_VARS) LOCAL_MODULE := cocos2dcpp_shared LOCAL_MODULE_FILENAME := libcocos2dcpp #LOCAL_SRC_FILES := hellocpp/main.cpp \ # ../../Classes/AppDelegate.cpp \ # ../../Classes/HelloWorldScene.cpp #cppファイルの自動検索設定 ifeq ($(HOST_OS),windows) CPP_FILES := $(shell dir $(LOCAL_PATH)/../../Classes/*.cpp /b/a-d/s) else CPP_FILES := $(shell find $(LOCAL_PATH)/../../Classes -name *.cpp) endif #cppファイルの自動検索設定(jniフォルダ内)◎◎ ifeq ($(HOST_OS),windows) CPP_FILES_JNI := $(shell dir $(LOCAL_PATH)/*.cpp /b/a-d/s) else CPP_FILES_JNI := $(shell find $(LOCAL_PATH) -name *.cpp) endif #LOCAL_SRC_FILES := main.cpp LOCAL_SRC_FILES := $(CPP_FILES_JNI:$(LOCAL_PATH)/%=%) LOCAL_SRC_FILES += $(CPP_FILES:$(LOCAL_PATH)/%=%) #LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes #☆☆ headerフォルダの自動検索設定 ifeq ($(HOST_OS),windows) LOCAL_C_INCLUDES := $(shell dir $(LOCAL_PATH)/../../Classes /b/ad/s) else LOCAL_C_INCLUDES := $(shell find $(LOCAL_PATH)/../../Classes -type d) endif #☆☆ headerフォルダの自動検索設定(JNIフォルダ)◎◎ ifeq ($(HOST_OS),windows) LOCAL_C_INCLUDES += $(shell dir $(LOCAL_PATH) /b/ad/s) else LOCAL_C_INCLUDES += $(shell find $(LOCAL_PATH) -type d) endif ifeq ($(APP_OPTIM),debug) LOCAL_CFLAGS := -w -g endif # use ndk-build(build_native.py resouce copy action) ifeq ($(HOST_OS),windows) $(shell del $(PROJECT_DIR)/assets/* /S) $(shell xcopy $(PROJECT_DIR)/../Resources/* $(PROJECT_DIR)/assets /E /Y) else $(shell rm -fr $(PROJECT_DIR)/assets/*) $(shell cp -fr $(PROJECT_DIR)/../Resources/* $(PROJECT_DIR)/assets) endif LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dxandroid_static LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static # ==== use x-plugin ===== LOCAL_WHOLE_STATIC_LIBRARIES += PluginProtocolStatic 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 include $(BUILD_SHARED_LIBRARY) $(call import-add-path,$(COCOS2DX_ROOT)) $(call import-add-path,$(COCOS2DX_ROOT)/cocos) $(call import-add-path,$(COCOS2DX_ROOT)/external) #$(call import-add-path,$(COCOS2DX_ROOT)/cocos/2d/platform/android) $(call import-module,2d) $(call import-module,extensions) $(call import-module,audio/android) ifneq (,$(findstring CC_ENABLE_BOX2D_INTEGRATION,$(APP_CPPFLAGS))) $(call import-module,Box2D) endif ifneq (,$(findstring CC_ENABLE_CHIPMUNK_INTEGRATION,$(APP_CPPFLAGS))) $(call import-module,chipmunk) endif $(call import-module,2d/platform/android) # ==== use x-plugin ===== #$(call import-module,plugin/publish/protocols/android) # ==>publush.sh 要らないんじゃないか疑惑が。。。。<汗 $(call import-module,plugin/protocols/proj.android/jni) #echo info☆☆☆ $(info "==>[INFO]OS: $(HOST_OS)") $(info "==>[INFO]TARGET: $(TARGET_ARCH_ABI)")
☆☆に関して>
XCodeではinclude文を書く時サブディレクトリを書かないのが常識なんだとか。。。(汗
従ってheaderに関しても自動検索pathの設定が必須となる感じのよう
△)#include "gameMain/GameMainViewController.h"
◎)#include "GameMainViewController.h"
◎◎に関して>
JNIフォルダも自動対象にして!と言われたので記述追加
☆☆☆に関して>
ADT 22.6.3 でまた腐ったので
ココの記述があると
とかよくわからんエラーが出たのでその場合はコメントにしてください。
unknown ABI
run-as: Package is unknown
あと1個前で動いてた 4.3がまた動かなくなったのでそれ以外の端末で動かすこと
◎◎cpptestをndk-buildで動かすための記述スニペット
変更点の詳細なドキュメントな記載が殆ど無いので
- cpptest
- 本体ソース
- doxygen-doc
だけが便りの状態orz
おもいっきり変な構成になってるので*3、COCOS2DX_ROOTをフルパスで書いてやらないと駄目。。。
とりあえず追記箇所のみ記載
- cpptest/Android.mk
LOCAL_PATH := $(call my-dir) PROJECT_DIR := $(LOCAL_PATH)/../ COCOS2DX_ROOT := /Users/◎◎/cocos2d/cocos2d-x-3.0 #〜略〜 include $(BUILD_STATIC_LIBRARY) $(call import-add-path,$(COCOS2DX_ROOT)) $(call import-add-path,$(COCOS2DX_ROOT)/cocos) $(call import-add-path,$(COCOS2DX_ROOT)/external)
LOCAL_PATH := $(call my-dir) PROJECT_DIR := $(LOCAL_PATH)/../ COCOS2DX_ROOT := /Users/◎◎/cocos2d/cocos2d-x-3.0 #〜略〜 include $(BUILD_STATIC_LIBRARY) # use ndk-build(build_native.py resouce copy action) ifeq ($(HOST_OS),windows) $(shell del $(PROJECT_DIR)/assets/* /S) $(shell xcopy $(PROJECT_DIR)/../Resources/* $(PROJECT_DIR)/assets /E /Y) else $(shell rm -fr $(PROJECT_DIR)/assets/*) $(shell cp -fr $(PROJECT_DIR)/../Resources/* $(PROJECT_DIR)/assets) endif $(call import-add-path,$(COCOS2DX_ROOT)) $(call import-module,tests/cpp-tests)
因みに Resouces/Image/*.gzとかはADTでファイル名不正とでるのでADTで動かす場合は削除しておくこと。
IOSでは問題ないんだろうけどなんだかなー(汗
あと空白文字と大文字ファイル名とかもAndは基本ダメなんだけど
これがIOS文化なのかねー。うーん><
◎◎CDTを動かすための記述スニペット
cocos2d-xのフォーラムでは.projectが壊れていてこう修正する等の話は既に言及されているが、
betaあたりから .cproject等も配布されてないところを見ると
あえて動かさないように殺してる?ようにも見える状況*4
ただこの状況だとCDTで実行できないので修正を行う
- .cproject
- 一般的なプロジェクトから持ってくるか
- cocos2d-x-3.0alpha1まではtemplateに.cprojectが配布されていたのでそこから持ってくるかしてコピーする
でも
しか通してなかったので、厳密には補完的には不十分*5
${ProjDirPath}/../../../cocos/2d
${ProjDirPath}/../../../cocos/2d/include
- .project
1)CDTとの連携できるように追記修正
<buildSpec> <buildCommand> <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name> <triggers>clean,full,incremental,</triggers> <arguments> </arguments> </buildCommand>
を追加
2)外部リンクを有効にする
- 相対パスで記述されてるver
<linkedResources> <link> <name>Classes</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/Classes</locationURI> </link> <link> <name>Resources</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/Resources</locationURI> </link> <link> <name>cocos2dx</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/cocos2d/cocos/2d</locationURI> </link> <link> <name>extensions</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/cocos2d/extensions</locationURI> </link> <link> <name>include_android</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/cocos2d/plugin/protocols/platform/android</locationURI> </link> <link> <name>include_protocols</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/cocos2d/plugin/protocols/include</locationURI> </link> <link> <name>scripting</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/cocos2d/cocos/scripting</locationURI> </link> </linkedResources>
- COCOS2DXと記述されてるver
<linkedResources> <link> <name>Classes</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/Classes</locationURI> </link> <link> <name>Resources</name> <type>2</type> <locationURI>PARENT-1-PROJECT_LOC/Resources</locationURI> </link> <link> <name>cocos2dx</name> <type>2</type> <locationURI>COCOS2DX/cocos/2d</locationURI> </link> <link> <name>extensions</name> <type>2</type> <locationURI>COCOS2DX/extensions</locationURI> </link> <link> <name>include</name> <type>2</type> <locationURI>COCOS2DX/plugin/protocols/include</locationURI> </link> <link> <name>scripting</name> <type>2</type> <locationURI>COCOS2DX/cocos/scripting</locationURI> </link> </linkedResources> <variableList> <variable> <name>COCOS2DX</name> <value>file:/Users/◎◎/cocos2d/cocos2d-x-3.0</value> </variable> </variableList>