usar studio ndk_toolchain_version ndk how como application android android-ndk

android - studio - ndk-build



Android.mk, incluye todos los archivos cpp (3)

¡He estado usando este script para mi Android.mk me ahorró mucho tiempo!

#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)/%=%)

Here está la esencia

Estoy tratando de construir un proyecto de Android usando el ndk, pero me he encontrado con algunos problemas.

Aquí está el archivo Android.mk que funciona:

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)

¿Hay alguna forma que me permita especificar todos los archivos * .cpp en el directorio, sin enumerarlos manualmente en LOCAL_SRC_FILES?

Hasta ahora he intentado usar LOCAL_SRC_FILES = $ (comodín * .cpp), pero ahora funcionó, parece que no se seleccionan archivos.


¿Qué tal esto?

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

Si temes que la expansión de * contenga $ (LOCAL_PATH) /, podría estar bien:

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


Podrías probar algo como esto ...

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

... Cambie [DIRECTORY] al directorio real de los archivos. Si están en el mismo directorio que su archivo .mk , elimine esa parte. Cree la variable FILE_LIST para encontrar todos los archivos .cpp en el directorio [DIRECTORY] . Entonces úselo en el listado de archivos. La línea LOCAL_SRC_FILES luego eliminará la LOCAL_PATH de la lista.