2011-10-04 9 views
5

Android用のハードウェアテストをいくつか構築しています。 I以下に示すように、それぞれのメイクファイルのコードのブロックを使用して、これらの実行ファイル一つ一つを構築Android.mkファイルを持っている:あなたが見ることができるように複数の実行ファイルをビルドする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) 

、コードの大部分はのために繰り返されます各試験(include $(CLEAR_VARS)include $(CLEAR_VARS)の間)。私はこれを単純化して、テスト名のリストと、それぞれに対して「呼び出される」makefileコードのセクションを持っているようにしたいと思います。そのコードを別のファイルに分割する必要があるかどうかは気にしません。ここに私が行っていることを示すためのPython風の擬似コードがあります:

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

フラグが変更されない場合、noを再初期化する必要はありませんか? – 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)))) 

ような何かを行うことができるはずです。

関連する問題