2011-07-13 4 views
0

現在、私は複数のターゲットルールを持つMakefileを持っています。ターゲットを記録し、そのターゲットセットで新しいMakeを呼び出します。現在のターゲットをMakefileに記録する

など。

$(LIST_OF_PRODUCTS) : 
    @echo Making [email protected] 
    @make build_product [email protected] 

出力ディレクトリとバイナリは、この製品名を使用します。..

どのように私は新しいくださいインスタンスを起動せずに、現在、マルチターゲットルールで構築されたターゲットを記録していますか?

私が試してみました:

$(LIST_OF_PRODUCTS) : PRODUCT := [email protected] 
$(LIST_OF_PRODUCTS) : build_product 
     @echo Making $(PRODUCT) Done. 
をしかし、これは動作しません。そのだけで他の場所で私の問題をプッシュしかし

# 
# Template for creating a target 
define target-template 
.PHONY : ${1} 
${1} : TARGET_NAME:=${1} 
${1} : check_target $$(OBJECTS) 
endef 

# 
#Generate targets from template 
$(foreach target,$(TARGET_LIST),$(eval $(call target-template,$(target)))) 

+0

あなたはbuild_product' 'で達成したい内容に応じて、あなたはあなたがして呼び出すことができ、ルールのテンプレートのようなものを作成するために' define'を使用することができる可能性が'$(eval ...)'と '$(call ...) 'を組み合わせて使用​​します。 – eriktous

答えて

0

私が思いついた最高のは、GNUのテンプレートメソッドを作るです。 check_targetは、そのターゲットがグループ経由で呼び出されたときに一度呼び出されるだけなので、

E..g

all : target_a target_b 
+2

達成しようとしていることはまだ明確ではありません。私はそれがもっと簡単にできると感じています。 – pmod

関連する問題