Buduję testy sprzętu dla systemu Android. Mam plik Android.mk która buduje te pliki wykonywalne, jeden po drugim, za pomocą fragmentu kodu makefile dla każdego, tak jak pokazano poniżej:Uproszczenie pliku Android.mk, który kompiluje wiele plików wykonywalnych
##### shared #####
LOCAL_PATH := $(my-dir)
##### test_number_one #####
test_name := test_number_one
include $(CLEAR_VARS)
LOCAL_CFLAGS := $(commonCflags)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../
LOCAL_MODULE_TAGS := optional eng
LOCAL_SHARED_LIBRARIES := some_library some_other_library
LOCAL_MODULE := $(test_name)
LOCAL_SRC_FILES := tests/$(test_name)/$(test_name).c
include $(BUILD_EXECUTABLE)
##### test_number_two #####
test_name := test_number_two
include $(CLEAR_VARS)
LOCAL_CFLAGS := $(commonCflags)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../
LOCAL_MODULE_TAGS := optional eng
LOCAL_SHARED_LIBRARIES := some_library some_other_library
LOCAL_MODULE := $(test_name)
LOCAL_SRC_FILES := tests/$(test_name)/$(test_name).c
include $(BUILD_EXECUTABLE)
Jak widać, większość kodu jest powtarzany dla każdy test (między include $(CLEAR_VARS)
i include $(CLEAR_VARS)
). Chciałbym uprościć to tak, że mam listę nazw testowych i fragment kodu makefile, który jest "wywoływany" dla każdego z nich. Nie obchodzi mnie, czy ten kod musi zostać podzielony na inny plik. Oto niektóre python-owskiej pseudokod wykazać co idę do:
##### shared #####
LOCAL_PATH := $(my-dir)
##### test_number_one #####
test_names := test_number_one test_numer_two
for each item in test_names:
include $(CLEAR_VARS)
LOCAL_CFLAGS := $(commonCflags)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../
LOCAL_MODULE_TAGS := optional eng
LOCAL_SHARED_LIBRARIES := some_library some_other_library
LOCAL_MODULE := $(item)
LOCAL_SRC_FILES := tests/$(item)/$(item).c
include $(BUILD_EXECUTABLE)
to możliwe w plikach Android.mk? Jak można to zrobić?
Jeśli flagi się nie zmieniają, nie trzeba ich ponownie inicjować, nie? – Geoffroy