Android.mk,包含所有的cpp文件

我试图用ndk构build一个Android项目,但是我遇到了一些麻烦。

这是Android.mk文件的作品:

LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := mylib LOCAL_CFLAGS := -Werror LOCAL_SRC_FILES := main.cpp, Screen.cpp, ScreenManager.cpp LOCAL_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY) 

有没有一种方法可以指定目录中的所有* .cpp文件,而不需要在LOCAL_SRC_FILES下手动列出它们?

到目前为止,我尝试使用LOCAL_SRC_FILES = $(通配符* .cpp),但现在确实工作,似乎没有文件被选中。

你可以尝试这样的事情…

 FILE_LIST := $(wildcard $(LOCAL_PATH)/[DIRECTORY]/*.cpp) LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%) 

…将[DIRECTORY]更改为文件的实际目录。 如果它们与.mk文件位于同一目录中,请删除该部分。 创buildFILE_LISTvariables以查找[DIRECTORY]目录下的所有.cpp文件。 然后在文件列表中使用它。 LOCAL_SRC_FILES行将从列表中删除LOCAL_PATH

我一直在使用这个脚本为我的Android.mk节省了我这么多的时间!

 #traverse all the directory and subdirectory define walk $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e))) endef #find all the file recursively under jni/ ALLFILES = $(call walk, $(LOCAL_PATH)) FILE_LIST := $(filter %.cpp, $(ALLFILES)) LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%) 

这是要点

这样怎么样:

 LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/*.cpp)) 

如果你担心*的扩展包含$(LOCAL_PATH)/,那么可能是好的:

 LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/./,,$(wildcard $(LOCAL_PATH)/./*.cpp))