Pages

2014年5月28日水曜日

cocos2d-x v.3.1 Androidプロジェクトの設定。Android.mkを修正してみる

cocos2d-x v.3.1のAndroidプロジェクトの設定を調べ中です。
今回は、生成した新規プロジェクトのAndroid.mkファイルを修正してみました。
Makefileをいじるなんて久しぶりです!


クラスファイルを自動でプロジェクトに追加

クラスファイルを作成する度に、Android.mkにファイル名を記述していくのは面倒なので、Classesフォルダ内にある*.cppファイル全てをコンパイル対象としました。
以下が、そのAndroid.mkファイルです。
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := cocos2dcpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp

MY_CLASS_FILES := $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)

LOCAL_SRC_FILES := hellocpp/main.cpp
LOCAL_SRC_FILES += $(MY_CLASS_FILES:$(LOCAL_PATH)/%=%)

$(info LOCAL_SRC_FILES = $(LOCAL_SRC_FILES))
$(info MY_CLASS_FILES = $(MY_CLASS_FILES))

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static

include $(BUILD_SHARED_LIBRARY)

$(call import-module,.)
$(call import-module,audio/android)

関連部分だけ、説明します。

my-dirは、Android.mkがあるフォルダ名を取得するマクロで、Android NDKのdefinitions.mk内に定義されています。
LOCAL_PATH := $(call my-dir)

MY_CLASS_FILESには、wildcardコマンドを使って、Classesフォルダ内にある*.cppファイル名を代入します。
MY_CLASS_FILES := $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)

LOCAL_SRC_FILESには、main.cppと、MY_CLASS_FILESに入っている*.cppファイル名を代入します。
LOCAL_SRC_FILES := hellocpp/main.cpp
LOCAL_SRC_FILES += $(MY_CLASS_FILES:$(LOCAL_PATH)/%=%)
MY_CLASS_FILESのファイル名には、LOCAL_PATHであるjni/が頭に付いています。LOCAL_SRC_FILESにとっては、それは不要なので、取り除くために $(LOCAL_PATH)/%=% としてファイル名からLOCAL_PATHを部分を除いています。

そして以下は、Android.mkのデバッグ用に変数の中身を表示しているところです。
必要なければコメントアウト(#)するか、削除しても構わない部分です。
$(info LOCAL_SRC_FILES = $(LOCAL_SRC_FILES))
$(info MY_CLASS_FILES = $(MY_CLASS_FILES))

その他の部分は、今のところいじっていません。
今後色々分かってきたら、また追記したいと思います。

関連記事

0 件のコメント:

コメントを投稿