次のシナリオを考えてみましょう。
tempfile: bar
generate tempfile (using bar)
foo: tempfile
generate foo (using bar)
問題は次のとおりです。をfoo
使用して作成されますtempfile
。tempfile
はビルド専用ですfoo
。また、から取得した一部のデータ(一時ファイルではない)がtempfile
含まれているため、変更されるたびに一時ファイルも変更され、影響を受けます。bar
bar
foo
今、実行時には変更されたときにのみビルドしたいとmake foo
思います。実際に起こるのは、Makeが一時ファイル(自分自身は関係ありません)を削除し、何も変更されていなくても毎回fooを構築することです。foo
bar
bar
どんな提案がありますか?
答え1
foo
これが必要な場合は、前提条件をbar
削除できます。tempfile
foo: bar
generate foo (using bar)
foo
必要に応じて(GNU)Makeにアーカイブtempfile
し、中間ファイルとしてのみ使用するようにtempfile
依頼できます。貴重なものとしてマーク:
.PRECIOUS: tempfile
tempfile: bar
generate tempfile
foo: tempfile
generate foo
必要に応じて別の可能性は、それを別のターゲットtempfile
として扱わないことです。tempfile
foo: bar
generate tempfile
generate bar