今回は、生成した新規プロジェクトの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 件のコメント:
コメントを投稿