8
votes

C ++ Inclure le navigateur de fichiers

J'ai un très grand projet avec des tonnes de fichiers d'en-tête compliqués qui les incluent tous. Il existe également un nombre massif de bibliothèques tiers qu'elle dépend. J'essaie de redresser le désordre, mais j'ai des problèmes, car beaucoup de temps, je vais supprimer une directive #include uniquement pour constater que les choses qu'il incluait est toujours incluse à travers l'un des autres fichiers . Y a-t-il un outil qui peut m'aider à comprendre cela? J'aimerais vraiment pouvoir cliquer sur un fichier .h et le demander quels fichiers CPP sont inclus dans (directement ou indirectement), ainsi que les chemins par lesquels il est inclus, puis cliquez également sur un fichier CPP et demandez-le lequel. Les fichiers H sont inclus (directement et indirectement). Je n'ai jamais entendu parler d'un outil qui fait cela, et un peu de rapides de googling n'a rien tourné, mais je ne sais peut-être pas quoi rechercher.


5 Réponses :


3
votes

Si vous utilisez des compilateurs de GCC, essayez ceci xxx

il affichera toutes les dépendances incluent toutes les dépendances du fichier ABC.CPP


1 commentaires

J'utilise Visual Studio 2008.



4
votes

Pour VS2003, il existe / showinclluant le drapeau (dans les propriétés C / C ++ / avancées). Cela imprimera tous les en-têtes Chaque fichier .CPP inclut et ce qu'ils incluent, de sorte que vous pouvez partir de là.

Je suis sûr qu'il y a la même option au même endroit pour VS2008.


1 commentaires

Cela existe pour VS2008, au même endroit. Il a l'air très prometteur. Cela me dit aussi que ma tâche est beaucoup plus décourageante que j'avais supposée ...



0
votes

Votre situation me rappelle la mienne. J'ai un groupe d'en-têtes que j'ai créé que j'utilise comme une bibliothèque au lieu de déranger avec une DLL.

Bien sûr, le cyclique-inclut peut devenir gênant, alors je trouve qu'un outil comme visual Assist X (1) aide à ce genre de chose. Il a une fonction qui peut trouver des références à des trucs, de sorte que vous puissiez facilement sortir d'où quelque chose est défini / déclaré / inclus, etc. Il a également beaucoup d'autres caractéristiques utiles, alors je considère que c'est assez utile.

Il y a probablement d'autres outils / plugins qui ont une fonction de référencement, mais généralement comme une caractéristique parmi les autres fonctions de refactorisation et de productivité de l'utilitaire.

htth


0 commentaires

4
votes

2 commentaires

Je me sens un peu mal à propos de recommander un outil non libres à la source fermé, mais c'est de loin la meilleure réponse à ma question. Cela fait à peu près tout ce dont j'ai besoin et ce n'est pas très cher. Mon patron a décidé d'acheter des licences pour la plupart du ministère.


Je suis juste un utilisateur impressionné! Je n'ai pas encore acheté de licence et je n'y ai utilisé que pendant la période d'essai, mais jusqu'à présent, cela a été très utile.



0
votes

C'est assez fastidieux, mais vous pouvez effectuer une recherche binaire à votre façon d'où un #include se produit à l'aide de #Error (et #pragma message) pour réduire la limite de la ligne qui inclut la troisième partie. Je l'ai fait dans le cas d'un seul fichier que j'essayais de suivre, mais cela ressemble à votre problème est plus grand, donc probablement l'un des outils dont d'autres personnes ont mentionné serait plus efficace.


0 commentaires