1. 程式人生 > >編寫Android.mk終極技巧

編寫Android.mk終極技巧

中提到了一些編譯android.mk檔案的技巧, 由於都涉及到了shell命令, 導致不能完全在windows下工作, 下面我使用純淨的makefile語法重新編寫了指令碼

# 配置自己的原始檔目錄和原始檔字尾名
MY_FILES_PATH  :=  $(LOCAL_PATH) \
                   $(LOCAL_PATH)/../../Classes

MY_FILES_SUFFIX := %.cpp %.c

# 遞迴遍歷目錄下的所有的檔案
rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d
/,$2)) # 獲取相應的原始檔 MY_ALL_FILES := $(foreach src_path,$(MY_FILES_PATH), $(call rwildcard,$(src_path),*.*) ) MY_ALL_FILES := $(MY_ALL_FILES:$(MY_CPP_PATH)/./%=$(MY_CPP_PATH)%) MY_SRC_LIST := $(filter $(MY_FILES_SUFFIX),$(MY_ALL_FILES)) MY_SRC_LIST := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%) # 去除字串的重複單詞 define uniq = $(
eval seen :=) $(foreach _,$1,$(if $(filter $_,${seen}),,$(eval seen += $_))) ${seen} endef # 遞迴遍歷獲取所有目錄 MY_ALL_DIRS := $(dir $(foreach src_path,$(MY_FILES_PATH), $(call rwildcard,$(src_path),*/) ) ) MY_ALL_DIRS := $(call uniq,$(MY_ALL_DIRS)) # 賦值給NDK編譯系統 LOCAL_SRC_FILES := $(MY_SRC_LIST) LOCAL_C_INCLUDES := $(
MY_ALL_DIRS)

完全使用makefile語法編寫, 可以工作在所有平臺上

from:      http://blog.ready4go.com/