特に大規模なプロジェクトでコードの特定の部分を再コンパイルする必要がない場合、コンパイラはどのように判断しますか?
たとえば、C++ に 2 つの C++ ファイルと 2 つのヘッダー ファイルがあるとします。ヘッダー ファイルは相互に依存しています。(これらは、お互いのファイルで指定されたクラスを使用します。)
コンパイラは、2 つの C++ ファイルのいずれかを生成するためにクラス情報を取得するために、常に両方のヘッダー ファイル (およびメソッド実装用の C++ ファイル) を解析する必要がありますか?
コマンド プロンプトでコンパイラを実行すると、オブジェクト ファイルを出力した直後にコンパイラが閉じてしまうので、抽象構文木や中間コードをキャッシュすることはできないといつも思っていました。ほとんどの C++ コンパイラは、特定のファイルがオブジェクト ファイルに出力する必要がないためスキップされることを認識していますか?