Estoy obligado a escribir documentación para mi proyecto actual que enumera todos los archivos .c y para cada uno enumera cada archivo .h que está incluido directa o indirectamente por ese archivo.Detección automática de dependencias C
Este es un proyecto grande, y aunque tenemos Makefiles que teóricamente tienen esta información, esos Makefiles a veces son incorrectos (hemos heredado este proyecto de otra compañía). A menudo hemos tenido que hacer un make clean ; make
para que nuestros cambios realmente se vean reflejados en la compilación, por lo que no quiero confiar en estos Makefiles.
Entonces, ¿hay alguna herramienta que nos permita darle el nombre de un archivo .c y una ruta de inclusión y que nos diga todos los archivos .h que están incluidos directa o indirectamente por el archivo .c? No tenemos nada raro como
#define my_include "some_file.h"
#include my_include
por lo que la herramienta no tiene que ser perfecta. Cualquier cosa que busque archivos .c y .h en una ruta include para los includes regulares sería suficiente.
podría cambiar un encabezado para incluir una cabecera adicional, cambiando con ello las dependencias de todos los archivos de origen, pero su lista de dependencias no conseguiría actualizada. Hacerlo completamente bien puede ser un IIRC bastante complicado, pero un buen comienzo es incluir todos tus propios encabezados en las dependencias de depend. –
Ah, y para el rendimiento, tenga en cuenta que esto vuelve a procesar todos los archivos si algún archivo cambia. Por lo tanto, es posible que desee tener varios archivos dependientes (tal vez incluso uno por archivo fuente).Finalmente, tenga en cuenta que generalmente puede usar -MM, que omite las dependencias de los encabezados del sistema, ya que no los cambiará. –
En realidad mentí - Siempre uso -MM yo mismo :) –