Problème: j'ai un grand projet Visual C ++ que j'essaie de migrer vers Visual Studio 2010. C'est un énorme mélange de trucs de différentes sources et d'âges différents. J'ai des problèmes parce que quelque chose inclut à la fois winsock.h
et winsock2.h
.
Question: Quels outils et techniques sont disponibles pour afficher la #include
hiérarchie d'un fichier source Visual Studio C ++?
Je sais comment cl /P
obtenir la sortie du préprocesseur, mais cela ne montre pas clairement quel fichier comprend quels autres fichiers (et dans ce cas, la /P
sortie fait 376932 lignes 8-)
Dans un monde parfait, j'aimerais un affichage hiérarchique des fichiers contenant quels autres fichiers, ainsi que des numéros de ligne pour que je puisse accéder aux sources:
source.cpp(1)
windows.h(100)
winsock.h
some_other_thing.h(1234)
winsock2.h
c++
visual-studio
include
RichieHindle
la source
la source
gcc -H -fsyntax-only ...
pour afficher la hiérarchie. Crédits à stackoverflow.com/a/18593344/427545Réponses:
Il y a un cadre:
Paramètres du projet -> Propriétés de configuration -> C / C ++ -> Avancé -> Afficher comprend
qui générera l'arbre. Il correspond au commutateur / showIncludes du compilateur
la source
-H
àC/C++ -> Command Line - Additional Options
1>\s*Note: including file:\s*C:\\Program Files \(x86\).*(\r\n|\n|$)
Le compilateur prend également en charge un commutateur / showIncludes - il ne vous donne pas de numéros de ligne, mais peut donner une vue assez complète des inclusions provenant d'où.
C'est sous Paramètres du projet -> Propriétés de configuration -> C / C ++ -> Avancé -> Afficher comprend.
la source
Nous avons trouvé IncludeManager comme un outil très puissant. Ce n'est pas gratuit (mais pas cher) et cela nous a permis de maîtriser nos problèmes d'inclusion et de réduire notre temps de compilation de 50 minutes à 8 minutes en éliminant de gros morceaux d'inclusions que nous n'utilisions pas.
la source
Pas aussi bon que la fonction d'inclusion hiérarchique de gcc, qui montre la hiérarchie d'inclusion en ligne directe en cas d'erreur. L'option "show includes" dans VS montre tout, ce qui est excessif lors du débogage des problèmes de fichiers d'inclusion hiérarchiques.
la source
Voici un bon outil FOSS tiers. Vous pouvez exporter les résultats au format XML, qui comprendra des données sur le nombre d'occurrences et les numéros de ligne.
la source
Il existe maintenant un plugin pour Visual Studio appelé IncludeToolbox . Il peut lister vos inclusions dépendantes et faire plus de choses comme une suppression et une compilation aléatoires pour voir si cette inclusion était requise.
la source
Essayez redhat Source-Navigator pour une solution plus graphique .
la source
cl / P devrait vous montrer les numéros de ligne, de sorte que vous puissiez dire le contexte d'où un fichier d'en-tête est inclus.
Si vous écrasez les lignes avec ...
grep "^ # line" file.i
... alors vous devriez avoir une indication assez claire des fichiers rencontrés dans l'ordre par le préprocesseur.
S'il s'agit d'un incident ponctuel, cela devrait être un diagnostic assez rapide.
la source
J'utilise Doxygen et GraphViz .
Installez les deux. Assurez-vous de sélectionner GraphViz comme outil pour générer les diagrammes de hiérarchie. Sélectionnez "Utiliser l'outil point du package GraphVix".
Assurez-vous également d'inclure le répertoire binaire de GraphViz dans votre variable d'environnement PATH.
la source