避免修改Android.mk添加cpp文件路径

手工输入项目需要编译的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

原文地址:https://www.cnblogs.com/HemJohn/p/7080417.html