最近、メイクベースのビルドプロセスの依存関係について.dファイルを扱う方法についていくつかの議論があります。ビルドが中断されたときに.dファイルが破損することがあるという問題が提起されました。エラー時に追加のファイルを削除するには
私たちは.DELET_ON_ERRORターゲットを使用して、ビルドが中断されるか失敗すると、生成中のオブジェクトファイルが確実に削除されるようにします。しかし、コンパイル時に.dファイルを生成するためにGCCも使用していますが、これも削除する必要があります。これについてmakeに伝える簡単な方法はないようです。
エラーが発生した場合、私たちのオブジェクトと依存ファイルの両方を削除する方法がありますか? .dファイルと.oファイルの両方が同時に生成され、エラーがあれば削除する必要があることがわかるように、ルールを設定できる方法はありますか?
代わりに、破損した.dファイルの問題を解決するために何かできることはありますか?これらの行に沿った1つの提案は、.dファイルを一時的な名前で生成し、それを正しい名前にコピーするファイルごとに別々のポストコンパイルステップを持つことです。
メイクファイルの先頭にある '.DELET_ON_ERROR:'は私のすべての一時ファイルを取り除きます。ありがとう! –
パターンルール "%.o:%.c"のレシピに2行目としてmvを入れることをお勧めします。シェルの '&&'を使って最初の行に置くと、動作や変更に何ら変化は見られません。 –
@RichardPerrin gmakeが '-i'(エラーを無視する)オプションで呼び出されると、あなたの提案は誤った動作をします。その場合、あなたのバージョンは 'gcc'にエラーがあるかどうかにかかわらず' mv'コマンドを実行しますが、私のオリジナルはそうしません。 –