2010-07-08 8 views
16

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.

Antwort

9

Ich habe die Abhängigkeitsinformationen von cmake2.8 (nach dem Ausführen von make) Leben in depend.make und depend.internal Dateien gefunden, wenn ich eine gcc-basierte Toolchain verwende. VS scheint solche Dateien nicht zu erzeugen (aber das scheint für Sie kein Problem zu sein). Auch diese Dateien sind cmake Interna, also verwenden Sie sie auf eigene Gefahr.

+1

Dies ist nur die transitive Schließung (d. H. Einschließlich indirekter Abhängigkeiten), aber es ist hilfreich, danke! – Thomas

Verwandte Themen