2016-04-14 15 views
0

私は新しいです。私は非常に基本的なMake質問をしており、それについて無駄に検索しました。私は、異なる前提条件に与えられるべき異なる議論を持っています。前提条件に引数を付ける

a b:c d 
     prog -i c -j d -out1 a -out2 b 

$ +はすべての前置詞をリストしますが、どのように引数を指定するのですか。私はレシピでb cとdを再入力することができ、自動変数はまったく使用しませんでしたが、入力を2回行う必要があります。 aとbをそれぞれcとdにリンクすることができるパターンルールを作ることができますが、引き続き引数をどのように提供しますか?

万人のおかげ

答えて

0

はのは、最初のいくつかの単純なルールを試してみましょう:

a b c: 
    @echo the target is [email protected] 

(または "BCを作る" "作る" とのテストこれを)

a: c d 
    @echo the prerequisites are $^ 
    @echo the first prerequisite is $< 

a: c d 
    @echo the second prerequisite is $(word 2,$^) 

(原油が、効果的です)

ルール:

a b : c d 
    prog -i c -j d -out1 a -out2 b 

は、いずれかのターゲット(aまたはb)で呼び出すことができ、まったく同じことをで実行するという点で少し奇妙です。これは完全に合法ですが、Makeは[email protected]というターゲット名にアクセスできますが、ターゲットの名前を簡単にスキャンできません。はビルドしようとしていません。しかし、冗長なタイピングを減らす方法があります:

TARG_1 := a 
TARG_2 := b 
TARGS := $(TARG_1) $(TARG_2) 

$(TARGS) : c d 
    prog -i $< -j $(word 2,$^) -out1 $(TARG_1) -out2 $(TARG_2) 
関連する問題