2011-10-04 4 views
5

Android 용 하드웨어 테스트를 구축 중입니다. 당신이 볼 수 있듯이여러 실행 파일을 빌드하는 Android.mk 파일 단순화

##### 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) 

은, 코드의 대부분은 반복되어 아래와 같이 나는, 각 메이크 코드 블록을 사용하여 하나씩이 실행 파일을 빌드 Android.mk 파일이 각 시험 (include $(CLEAR_VARS)include $(CLEAR_VARS) 사이). 나는 이것들을 단순화하여 테스트 이름리스트와 makefile 코드 섹션을 가지고있다. 코드를 다른 파일로 분할해야하는지는 신경 쓰지 않습니다. 다음은 내가하려고하는 것을 보여주기위한 파이썬 에스 케이프 의사 코드입니다.

##### 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) 

Android.mk 파일에서 가능한가요? 어떻게 할 수 있습니까?

+0

플래그가 변경되지 않으면 플래그를 다시 초기화 할 필요가 없습니다. – Geoffroy

답변

8

당신은 우리는 여러 사전 구축 된 라이브러리를 포함하는 우리의 프로젝트에 유사한 구조를 가지고

define my_add_executable 
    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 := $1 
    LOCAL_SRC_FILES := tests/$1/$1.c 
    include $(BUILD_EXECUTABLE) 
endef 

test_names := test_number_one test_numer_two 
$(foreach item,$(test_names),$(eval $(call my_add_executable,$(item)))) 

처럼 뭔가를 할 수 있어야합니다.

관련 문제