前回は、PHONYターゲットについては触れていませんでした。
今回は、それについて補足調査します。
用意するMakefile
all: a
@echo
a: b
@echo -n a
b: c
@echo -n b
c:
@echo -n c
@echo
a: b
@echo -n a
b: c
@echo -n b
c:
@echo -n c
$ touch c
$ touch b
$ touch a$ make
これは、当然の結果ですね。何も構築する必要がありません。
次に c を PHONYターゲットにします。
all: a
@echo
a: b
@echo -n a
b: c
@echo -n b
@echo
a: b
@echo -n a
b: c
@echo -n b
.PHONY: c
@echo -n c
$ touch c
$ touch b
$ touch a$ make
cb
c を PHONY ターゲットにした場合、問答無用で c の構築ルールが実行されるだけでなく、 c を依存関係に引き連れている b の構築ルールも必ず実行されます。
ただし、 a の構築ルールまでは実行されていないことから、その上の階層までは伝搬しないようです。
0 件のコメント:
コメントを投稿