android.mk
在mac和windows下多目錄 文件/目錄遍歷
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/cocos)
$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/cocos/audio/include)
###############################################################################
#mac環境 注釋掉下面這行
IS_WINDOWS := true
LOCAL_MODULE := MyGame_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
###############################################################################
# 配置源文件目錄和源文件后綴名
MY_FILES_PATH := $(LOCAL_PATH) \
$(LOCAL_PATH)/../../../Classes
MY_FILES_SUFFIX := %.cpp %.c
# 遍歷目錄及子目錄的函數
define walk
$(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef
# 去除字串的重復單詞
define uniq =
$(eval seen :=)
$(foreach _,$1,$(if $(filter $_,${seen}),,$(eval seen += $_)))
${seen}
endef
# 遍歷Jni和Classes目錄
ALLFILES := $(foreach src_path,$(MY_FILES_PATH), $(call walk,$(src_path),*.*) )
#$(warning ALLFILES $(ALLFILES))
# 從所有文件中提取出所有.c和.cpp文件
FILE_LIST := $(filter $(MY_FILES_SUFFIX),$(ALLFILES))
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
$(warning LOCAL_SRC_FILES= $(LOCAL_SRC_FILES))
###############################################################################
ifdef IS_WINDOWS
# windows遞歸遍歷獲取所有目錄
MY_ALL_DIRS := $(dir $(foreach src_path,$(MY_FILES_PATH), $(call walk,$(src_path),*/) ) )
MY_ALL_DIRS := $(call uniq,$(MY_ALL_DIRS))
LOCAL_C_INCLUDES := $(MY_ALL_DIRS)
else
# mac獲取所有目錄
FILE_INCLUDES := $(shell find $(LOCAL_PATH)/../../../Classes -type d)
LOCAL_C_INCLUDES := $(FILE_INCLUDES)
endif
$(warning LOCAL_C_INCLUDES= $(LOCAL_C_INCLUDES))
###############################################################################