マニュアルに従って、 gmakeとgcc -MM
ヘッダーの依存関係を追跡しています。このメカニズムは、計算された依存関係をインポートするためにmakefileディレクティブに依存しています。include
ファイルはmakefileに含まれているため.d
、を含むすべてのターゲットを作成するには、ファイルが存在している必要がありますclean
。したがってclean
、正しいことを行う前に、依存関係を生成する必要があります。ビルドに失敗した場合は、clean
さらに混乱を招きます。
さらにclean
、ターゲットを構築する前にすべての依存関係を作成する必要があります。
さらに、存在しないファイルを含むようにファイルが変更された場合、依存関係の解決が失敗し、何も構築されません。
ヘッダーが削除された場合でも、既存の依存関係ファイルにはターゲットとして名前が付けられたままであり、問題のある依存関係ファイルが削除されるまで何もビルドされません…これは。では実行できませんclean
。
の置換パターンをinclude
ワイルドカードに置き換えて既存の依存関係ファイルをすべて含めると、いくつかの問題は解決しますが、壊れた依存関係をクリーンアップすることはできず、古い依存関係ファイルが削除されることはありません。より良い解決策はありますか?マニュアルの例は本当に実際の使用を目的としていますか?