これがメイクファイルです。
.PHONY: all target1 target2 target
all: target1 target2
target1: NUM = 1
target2: NUM = 2
target1 target2: target
target:
@echo "this is target ${NUM}"
出力は次のとおりです
this is target 1
なぜ最初の前提条件だけが実行されますか?変数と関係があると思います。ありがとうございます!
答え1
Makefileの内容は次のとおりです。
- すべてのゴールは偽です(つまりディスクのアーティファクトと一致しません。)
all
target1
とに依存し、target2
最初のターゲットなので、デフォルトのターゲットです。target1
1に設定NUM
(使用ターゲットごとの変数の割り当て);target2
NUM
2に設定。target1
どちらもtarget2
以下に依存しますtarget
。target
与えられたコマンドを実行して満足する必要がありますecho
。
これらの定義を使用して実行すると、make
次の結果が生成されます。
all
それは偽りで要求するので不満足target1
ですtarget2
。target1
false で必須なので満足できませんtarget
(NUM
1 に設定)。target
偽で前提条件がないため、満足できない場合はコマンドをmake
実行してください。echo
target2
家具なので満足していませんが、target
処理されて何も起こらないので満足です。
ここでやろうとしているように、ターゲットを関数として使用することはできません。一部のMake実装はサポートしています。機能しかし、次は必要ありません。
target1 target2:
@echo "this is target ${NUM}"