headers guards from custom cabecera archivos c++ c header

guards - headers c++>



Herramienta para rastrear#include dependencias (11)

Buenas noticias: redhat Source-Navigator (también se ejecuta en Windows). Por supuesto, los modificadores del compilador (mencionados anteriormente) tienen un análisis superior y no estoy seguro de cómo manejará MFC, Qt y sus palabras clave mágicas.

¿Alguna buena sugerencia? La entrada será el nombre de un archivo de encabezado y la salida debe ser una lista (preferiblemente un árbol) de todos los archivos que lo incluyan directa o indirectamente.


Gracias a KeithB. Busqué los documentos para cl.exe (VS2008) y encontré el indicador / showIncludes. Desde el IDE, esto se puede configurar desde la página de propiedades de cualquier archivo CPP.



He jugado con una herramienta llamada cinclude2dot . Fue muy útil para obtener un control sobre una base de código bastante grande cuando vine a trabajar aquí. De hecho, he pensado en integrarlo en nuestra construcción diaria.


Para una solución de gran peso, deberías consultar Doxygen . Explora su código base y crea un sitio web, efectivamente, que documenta su código. Una de las muchas cosas que muestra es incluir árboles.

Si estaba buscando poder conectar el resultado de esta herramienta a otro proceso, puede que esto no funcione para usted (aunque Doxygen sí lo hace a otros formatos, no estoy muy familiarizado con esa función). Sin embargo, si simplemente quieres ver las dependencias, debería funcionar muy bien.


Primero, cinclude2dot.pl es una secuencia de comandos perl que analiza el código C / C ++ y produce un gráfico de dependencia #include como un archivo de puntos para la entrada en graphviz.

http://www.flourish.org/cinclude2dot/

Si no quiere seguir el camino de ese tipo de herramienta manual, entonces el ganador de manos a la nada es, en mi opinión, una herramienta conocida como "IncludeManager" de ProFactor.

http://www.profactor.co.uk/includemanager.php

Hay una prueba gratuita, y es increíble. Se trata de un complemento para Visual Studio que está totalmente integrado, por lo que al hacer doble clic en algo aquí se accede al lugar donde está incluido allí.

Tooltip mouseover te brinda toda la información que deseas, y te permite profundizar, eliminar subárboles enteros que no te interesan, ver representaciones que no sean gráficos, recorrer una lista de coincidencias para esto y aquello, es maravilloso.

Si es rápido al respecto, puede refactorizar la estructura #include de proyectos grandes antes de que se agote la prueba. Aun así, no cuesta mucho, alrededor de $ 35 por licencia.

Por lo que hace, es casi perfecto. No solo # incluye gráficos, sino también las dependencias entre proyectos de archivos compartidos, el impacto en los tiempos de compilación, las propiedades detalladas en las grillas, perfecto.


Si tiene acceso a GCC / G ++, la opción -M arrojará la lista de dependencia. No hace ninguna de las cosas extra que hacen las otras herramientas, pero dado que proviene del compilador, no hay posibilidad de que recoja archivos del lugar "incorrecto".


Sobre la base de la respuesta de KeithB , aquí está la sintaxis de GNUmake para 1) generar automáticamente los archivos de dependencia, 2) mantenerlos actualizados, y 3) usarlos en su archivo MAKE:

.dep: mkdir $@ .dep/%.dep: %.c .dep (echo $@ //; $(CC) $(IFLAGS) -MM $<) > $@ || (rm $@; false) .dep/%.dep: %.cpp .dep (echo $@ //; $(CXX) $(IFLAGS) -MM $<) > $@ || (rm $@; false) DEPEND := $(patsubst %.dep,.dep/%.dep,$(OBJ:.o=.dep)) -include $(DEPEND)

(Asegúrese de cambiar esas sangrías a hardtabs).



cscope ( http://cscope.sourceforge.net/ ) hace esto en un xterm independiente, y también se puede usar dentro de tu editor favorito; tiene excelentes emacs y compatibilidad con vi / vim.


Understand for C ++ debería ser capaz de ayudarte: construye una base de datos a la que puedes acceder desde Perl.