
おおよそ次のようなMakefileがあります。
.PRECIOUS: %.a %.b %.c
%.a:
touch $@
%.b: %.a
touch $@
%.c: %.b
touch $@
を使用して "test.c"を生成すると、3make test.c
つのファイル(test.a
、、、)がすべて正しく生成されます。しかし、今削除した後に再生成しようとすると何も起こりません。test.b
test.c
test.a
test.c
その理由は明らかです。test.c
にのみ依存しtest.b
てtest.b
変更されていないので、再構築する必要はありません。ただし、なくなった分test.b
再構築しなければならず、test.a
で拡散させなければならないtest.c
。私はこの行動が非常に直感的ではない副作用だと思います。
直感的な方法で「遷移的」依存関係を処理するためにmakeを取得できますか? (つまり、削除後にtest.a
すべてのターゲットを再構築する必要があります。)
問題はパターンルールでのみ発生します。
(Ps私はすべての中間ファイルが必要なので、PRECIOUS.GNU Makeのデフォルトの動作は中間ファイルを削除することです。)