次のような Makefile があります。
.PRECIOUS: do/%.build
do/%.install: do/%.build
touch $@
do/%.build:
touch $@
私の意図は、すべての do/ .install ターゲットが do/ .build ターゲットに依存し、ビルド ターゲットのスタンプ ファイルが欠落している場合はビルド ターゲットのルールが実行され、ビルド ターゲットが存在する場合は install ターゲットが実行されることです。スタンプの方が新しいです。これは、最初の実行時に正常に機能します。
$ make do/foo.install
touch do/foo.build
touch do/foo.install
ビルド スタンプが新しい場合にも問題なく動作します。
$ touch do/foo.build
$ make do/foo.install
touch do/foo.install
ただし、インストール スタンプが存在し、ビルド スタンプがない場合、意図したとおりに機能しません。
$ rm do/foo.build
$ make do/foo.install
make: `do/foo.install' is up to date.
インストール ターゲットは実行されません。私は何をすべきか?これは、ビルド スタンプの自動削除を回避するために .PRECIOUS 行を追加する必要があるという事実と関係がありますか?
よろしく、ティノ