標籤:cocos2dx android makefile 通用進階寫法
不廢話,直接貼,節約時間。需要改進的地方請各位指出,共同學習。
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := cocos2dcpp_sharedLOCAL_MODULE_FILENAME := libcocos2dcpp#########################################################################################################手動遍曆檔案夾以及子目錄########################################################這是第一種很麻煩的寫法#################################XLOCAL_C_INCLUDES := # $(LOCAL_PATH)/hellocpp # $(LOCAL_PATH)/../../Classes##XLOCAL_CPPS := # $(wildcard $(LOCAL_PATH)/hellocpp/*.cpp) # $(wildcard $(LOCAL_PATH)/../../Classes/*.c) # $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)##XLOCAL_SRC_FILES := $(XLOCAL_CPPS:$(LOCAL_PATH)/%=%)##LOCAL_C_INCLUDES += $(XLOCAL_C_INCLUDES)#LOCAL_SRC_FILES := $(XLOCAL_SRC_FILES)########################################################################################################################################################################################自動遍曆檔案夾以及子目錄########################################################這是第二種比較方便的寫法############################### 遍曆目錄及子目錄的函數 #define walk # $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e))) #endef ### 遍曆Classes目錄 #ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes) # #FILE_LIST := hellocpp/main.cpp ## 從所有檔案中提取出所有.cpp檔案 #FILE_LIST += $(filter %.cpp, $(ALLFILES)) # #LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%) #LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes # $(LOCAL_PATH)/../../Classes/LogClass########################################################################################################################################################################################自動遍曆檔案夾以及子目錄(源檔案和標頭檔)##########################################這是第三種之相對最方便的寫法############################ 配置自己的源檔案目錄和源檔案尾碼名APP_FILES_PATH := $(LOCAL_PATH) $(LOCAL_PATH)/../../ClassesAPP_FILES_SUFFIX := %.cpp %.c# 遞迴遍曆目錄下的所有的檔案rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))# 擷取相應的源檔案APP_ALL_FILES := $(foreach src_path,$(APP_FILES_PATH), $(call rwildcard,$(src_path),*.*) ) APP_ALL_FILES := $(APP_ALL_FILES:$(APP_CPP_PATH)/./%=$(APP_CPP_PATH)%)APP_SRC_LIST := $(filter $(APP_FILES_SUFFIX),$(APP_ALL_FILES)) APP_SRC_LIST := $(APP_SRC_LIST:$(LOCAL_PATH)/%=%)# 去除字串的重複單詞define uniq = $(eval seen :=) $(foreach _,$1,$(if $(filter $_,${seen}),,$(eval seen += $_))) ${seen}endef# 遞迴遍曆擷取所有目錄APP_ALL_DIRS := $(dir $(foreach src_path,$(APP_FILES_PATH), $(call rwildcard,$(src_path),*/) ) )APP_ALL_DIRS := $(call uniq,$(APP_ALL_DIRS))# 賦值給NDK編譯系統LOCAL_SRC_FILES := $(APP_SRC_LIST)LOCAL_C_INCLUDES := $(APP_ALL_DIRS)###############################################################################LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_staticLOCAL_WHOLE_STATIC_LIBRARIES += box2d_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_staticLOCAL_WHOLE_STATIC_LIBRARIES += spine_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_staticinclude $(BUILD_SHARED_LIBRARY)$(call import-module,.)$(call import-module,audio/android)$(call import-module,Box2D)$(call import-module,editor-support/cocosbuilder)$(call import-module,editor-support/spine)$(call import-module,editor-support/cocostudio)$(call import-module,network)$(call import-module,extensions)