makeマニュアルで自動依存関係の生成を読んでいましたが、なぜこの機能が必要なのか理解できません。私が取り組んでいて、最初から書き始めたプロジェクトは、次のように構成されています。
- 各ユニット(ライブラリ)には独自のフォルダがあります
- 各.cppファイルには、同じディレクトリにある同じ名前の単一の.hファイルが含まれている必要があります。OK、このルールは、循環依存の場合のように、少し制限が厳しすぎる可能性があります。その場合、次のルールで説明するように、別の.hファイルを含めることができます。
- .hファイルに他のヘッダーを含める場合、依存関係が別のユニット(ライブラリ)にある場合は、常にプロジェクトのルートディレクトリに相対的なパスを使用してください。それ以外の場合は、ファイルの名前を含めてください。
makefileで-I .
、コンパイラに渡します。ディレクトリXで.cppファイルを検出すると、同じディレクトリ(または.
ディレクトリ)で.hファイルを検索します。.hファイルを解析するときに、.
フォルダーに関連するインクルードが検出されるため、それらを探す場所がわかります。
さて、コードが上記のように構造化できる場合、なぜ誰かが-M
フラグを使用して依存関係のリストを生成し、sedを混乱させてあいまいな.dファイル(依存関係を表す)を生成したいのでしょうか?コードファイルから依存関係の特定のリストを生成する意味がわかりません。