手工输入项目需要编译的cpp文件到Android.mk里的缺点
1)繁琐,如果cpp文件很多,简直无法忍受
2)手工输入过程中容易出现错误
3)如果cpp文件更改名称,需要修改android.mk文件
有一种方法可以直接遍历文件夹里面的所有.cpp和.c文件实现。
方法如下:
#遍历当前目录和所有子目录,放到walk变量里面
define walk
$(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef
#过滤walk变量中路径为Classes的文件路径,放到ALL_FILES变量中
ALL_FILES := $(call walk, $(LOCAL_PATH)/../../Classes)
#过滤ALL_FILES变量里面的.cpp和.c文件,存放到CPP_FILE_LIST变量里
CPP_FILE_LIST := $(filter %.cpp, $(ALL_FILES))
CPP_FILE_LIST += $(filter %.c, $(ALL_FILES))
#最后一步,CPP_FILE_LIST里面的绝对路径改成相对路径,放到LOCAL_SRC_FILES变量里,准备编译
LOCAL_SRC_FILES := $(CPP_FILE_LIST:$(LOCAL_PATH)/%=%)
#后面还可以附加自己定义的cpp文件相对路径
LOCAL_SRC_FILES += hellolua/main.cpp
转载请注明出处,from 博客园HemJohn