2010-07-08 3 views
16

J'ai un projet CMake C++ qui grandit rapidement et change souvent. J'essaie de réduire les temps de compilation au minimum.Comment afficher les dépendances de compilation depuis CMake ou make?

Souvent, lorsque je reconstruis le projet, surtout après un changement d'en-tête, je suis surpris du nombre d'unités de compilation qui doivent être recompilées. J'essaie d'identifier #include s qui peuvent éventuellement être évités, par exemple en utilisant des pré-déclarations ou en ne soulignant pas les fonctions triviales dans les en-têtes.

Est-il possible de trouver, à partir de CMake, à partir du Makefile généré, ou directement à partir des fichiers eux-mêmes, quelles unités dépendent des en-têtes?

Une liste serait bien, un graphique visuel (graphviz?) Encore plus agréable. Google ne montre rien pour moi. CMake a l'option --graphviz, mais elle opère sur des cibles, pas sur des unités de compilation individuelles.

Quelque chose multiplate-forme (c'est-à-dire utilisant seulement CMake) est préféré, mais je vais me contenter de Linux seulement.

Répondre

9

J'ai trouvé les informations de dépendance générées par cmake2.8 (après l'exécution de make) vivant dans les fichiers depend.make et depend.internal, lorsque j'utilise une chaîne d'outils basée sur gcc. Utiliser VS ne semble pas générer de tels fichiers (mais cela ne semble pas être un problème pour vous). Aussi ces fichiers sont des internes de cmake, alors utilisez-les à vos risques et périls.

+1

Ceci est seulement la fermeture transitive (c'est-à-dire y compris les dépendances indirectes), mais c'est utile, merci! – Thomas

Questions connexes