Pregunta

Cualquier buen sugerencias?De entrada va a ser el nombre de un archivo de encabezado y el resultado debe ser una lista (de preferencia un árbol) de todos los archivos, incluidos directa o indirectamente.

¿Fue útil?

Solución

Si usted tiene acceso a GCC/G++, entonces el -M opción la salida de la lista de dependencias.No hacer ninguna de las cosas adicionales que las otras herramientas, pero ya que viene desde el compilador, no hay ninguna posibilidad de que se recoja archivos desde el "mal" lugar.

Otros consejos

Gracias a KeithB.Alcé la vista de la documentación para cl.exe (VS2008) y encontró que el /showIncludes bandera.Desde el IDE, esto se puede establecer a partir de la página de propiedades de cualquier archivo CPP.

Screen shot

Para un peso pesado de la solución, usted debe comprobar fuera de doxygen.Explora a través de su base de código y viene con un sitio web, efectivamente, que los documentos de su código.Una de las muchas cosas que se muestra se incluyen los árboles.

Si estabas buscando ser capaz de conectar la salida de esta herramienta en algún otro proceso, entonces esto puede que no funcione para usted (aunque doxygen hace salida a otros formatos, no estoy muy familiarizado con esa característica).Si usted simplemente quiere globo ocular de las dependencias, sin embargo, se debe trabajar mucho.

He jugado un poco con una herramienta llamada cinclude2dot.Fue muy útil en conseguir una manija en una gran base de código cuando vine a trabajar aquí.De hecho, he pensado integrar en nuestro día a construir con el tiempo.

En primer lugar, cinclude2dot.pl es un script en perl que los análisis de C/C++ de código y produce un #include gráfico de dependencia como un punto archivo para la entrada en graphviz.

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

Si usted no quiere ir por el camino de ese tipo de herramienta manual, a continuación, las manos hacia abajo, por mucho, el ganador es en mi opinión una herramienta conocida como "IncludeManager" de ProFactor.

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

Hay una versión de prueba gratuita, y es impresionante.Es un plug-in para Visual Studio que está totalmente integrado, de forma doble clic en algo por aquí lleva al lugar en donde está incluido allí.

Descripción mouseovers dará toda la información que usted quiere, y que le permite perforar hacia abajo / arriba, quite toda la subárboles no le importa, vistas a la representación aparte de los gráficos, ciclo a través de una lista de partidos de este y que, es maravilloso.

Si eres rápido, puedes refactorizar el #include estructura de grandes proyectos antes de que el período de prueba.Aún así, no cuesta mucho, alrededor de $35 por cada licencia.

Por lo que hace, es casi perfecto.No sólo #include gráficos, pero también entre los proyectos de las dependencias de los archivos compartidos, el impacto en los tiempos de construcción, las propiedades detalladas en las cuadrículas, perfecto.

Buenas noticias: redhat Fuente-Navigator (funciona también en Windows).Por supuesto, el compilador de interruptores (mencionado anteriormente) tienen superior de análisis y no estoy seguro de cómo va a manejar MFC, Qt y su magia de las palabras clave.

redhat Source-Navigator

Edificio en KeithB la respuesta, aquí es GNUmake sintaxis automáticamente 1) generar los archivos de dependencia, 2) mantenerlos actualizados, y 3) el uso de ellos en el archivo makefile:

.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 los guiones para hardtabs.)

Entender para C++ debe ser capaz de ayudarle a:se construye una base de datos que se puede acceder desde Perl.

cscope (http://cscope.sourceforge.net/) esta en un independiente xterm, y también puede ser utilizado en el interior de su editor favorito - tiene un gran emacs y vi/vim apoyo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top