Ich habe ein CMake C++ Projekt, das schnell wächst und sich oft ändert. Ich versuche die Kompilierzeiten auf ein Minimum zu reduzieren.Wie man Kompilierungsabhängigkeiten von CMake oder make ausgibt?
Oft, wenn ich das Projekt neu, vor allem nach einem Headerwechsel, bin ich überrascht, wie viele Kompilierungseinheiten neu kompiliert werden müssen. Ich versuche, #include
s zu identifizieren, die möglicherweise vermieden werden können, zum Beispiel, indem Sie Vordeklarationen verwenden oder nicht triviale Funktionen in Headern einbinden.
Gibt es eine Möglichkeit, aus CMake selbst, aus dem generierten Makefile oder direkt aus den Dateien selbst herauszufinden, welche Einheiten von welchen Headern abhängen?
Eine Liste wäre nett, eine visuelle Grafik (graphviz?) Noch schöner. Google stellt nichts für mich auf. CMake hat die --graphviz
Option, aber es funktioniert auf Ziele, nicht einzelne Kompilierungseinheiten.
Etwas Cross-Plattform (d. H. Mit nur CMake) ist bevorzugt, aber ich werde mich auch für Linux-nur begnügen.
Dies ist nur die transitive Schließung (d. H. Einschließlich indirekter Abhängigkeiten), aber es ist hilfreich, danke! – Thomas