Problema: Tengo un gran proyecto de Visual C ++ que estoy intentando migrar a Visual Studio 2010. Es una gran mezcla de cosas de varias fuentes y de diferentes edades. Tengo problemas porque algo incluye ambos winsock.h
y winsock2.h
.
Pregunta: ¿Qué herramientas y técnicas existen para mostrar la #include
jerarquía de un archivo fuente de Visual Studio C ++?
Sé sobre cl /P
cómo obtener la salida del preprocesador, pero eso no muestra claramente qué archivo incluye qué otros archivos (y en este caso, la /P
salida tiene 376,932 líneas de largo 8-)
En un mundo perfecto, me gustaría una visualización jerárquica de qué archivos incluyen qué otros archivos, junto con números de línea para poder saltar a las fuentes:
source.cpp(1)
windows.h(100)
winsock.h
some_other_thing.h(1234)
winsock2.h
c++
visual-studio
include
RichieHindle
fuente
fuente
gcc -H -fsyntax-only ...
para generar la jerarquía. Créditos para stackoverflow.com/a/18593344/427545Respuestas:
Hay una configuración:
Configuración del proyecto -> Propiedades de configuración -> C / C ++ -> Avanzado -> Mostrar incluye
eso generará el árbol. Se asigna al compilador switch / showIncludes
fuente
-H
enC/C++ -> Command Line - Additional Options
1>\s*Note: including file:\s*C:\\Program Files \(x86\).*(\r\n|\n|$)
El compilador también es compatible con un modificador / showIncludes: no proporciona números de línea, pero puede ofrecer una visión bastante completa de qué incluye venir de dónde.
Está en Configuración del proyecto -> Propiedades de configuración -> C / C ++ -> Avanzado -> Mostrar incluye.
fuente
Hemos encontrado que IncludeManager es una herramienta muy poderosa. No es gratuito (pero no es costoso) y nos permitió controlar nuestros problemas de inclusión y reducir nuestro tiempo de compilación de 50 minutos a 8 minutos al eliminar grandes porciones de inclusiones que no estábamos usando.
fuente
No es tan bueno como la función de inclusión jerárquica de gcc, que muestra la jerarquía de inclusión de línea directa en caso de error. La opción "mostrar incluye" en VS muestra todo, lo cual es excesivo al depurar problemas de archivos jerárquicos incluidos.
fuente
Aquí hay una buena herramienta FOSS de terceros. Puede exportar resultados a XML, que incluirá datos sobre la cantidad de ocurrencias y números de línea.
fuente
Ahora hay un complemento para Visual Studio llamado IncludeToolbox . Puede enumerar sus inclusiones dependientes y hacer más cosas como eliminar y compilar al azar para ver si esa inclusión fue necesaria.
fuente
Pruebe redhat Source-Navigator para obtener una solución más gráfica .
fuente
cl / P debería mostrarle los números de línea, de modo que pueda decir el contexto de dónde se incluye un archivo de encabezado.
Si saca las líneas con ...
grep "^ # line" file.i
... entonces debería tener una indicación bastante clara de qué archivos se encontraron en orden por el preprocesador.
Si es un incidente único, este debería ser un diagnóstico bastante rápido.
fuente
Yo uso Doxygen y GraphViz .
Instalar ambos. Asegúrese de seleccionar GraphViz como la herramienta para generar los diagramas de jerarquía. Seleccione "Usar herramienta de puntos del paquete GraphVix".
También asegúrese de incluir el directorio binario de GraphViz en su variable de entorno PATH.
fuente