Android.mk, incluye todos los archivos cpp


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

Aquí está el Android.mk archivo 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 una manera que me permite especificar todos los *.archivos cpp en el directorio, sin enumerarlos manualmente en LOCAL_SRC_FILES?

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

Author: gq3, 2012-01-24

3 answers

Podrías intentar 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 entonces elimine esa parte. Cree la variable FILE_LIST para encontrar todos los archivos .cpp bajo el directorio [DIRECTORY]. Luego utilícelo en la lista de archivos. La línea LOCAL_SRC_FILES eliminará el LOCAL_PATH del listado.

 70
Author: DRiFTy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-24 00:10:29

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

Aquí está la esencia

 20
Author: NiTe Luo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-15 23:31:17

Qué tal así:

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

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

LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/./,,$(wildcard $(LOCAL_PATH)/./*.cpp))
 3
Author: user2356722,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-07 02:54:32