2012年7月2日月曜日

make の動きを解剖する その2

前回、makeが構築ルールを実行する時はどんなときなのか、調べてみました。
前回は、PHONYターゲットについては触れていませんでした。

今回は、それについて補足調査します。

用意するMakefile

all: a
    @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

.PHONY: c
c:
    @echo -n c


$ touch c
$ touch b
$ touch a
$ make
cb


c を PHONY ターゲットにした場合、問答無用で c の構築ルールが実行されるだけでなく、 c を依存関係に引き連れている b の構築ルールも必ず実行されます。
ただし、 a の構築ルールまでは実行されていないことから、その上の階層までは伝搬しないようです。

0 件のコメント:

コメントを投稿