2010-08-12 17 views
6

Después de casi una década de codificación C# y VC++, estoy volviendo a un entorno linux - g ++ - make - emacs.Cómo detectar cambios en el encabezado en make list

Tratando de refrescar mi memoria acerca de cómo escribir un archivo de maquillaje que no tenía muchos problemas, pero tropezó en el número siguiente, que tengo que admitir que no recuerdo cómo lo resolví en el pasado:

Digamos que un archivo .cpp en particular tiene algunas dependencias con varios otros archivos de encabezado (dejando de lado su encabezado correspondiente, que es fácil de manejar) ... ¿Cuál es la mejor manera de detectar que algunos de los .h se cambiaron?

Ciertamente no me gusta la idea de colocarlos en mi lista de destino - depende ya que este es un proceso manual y propenso a errores!

La respuesta fácil es, por supuesto, construir limpio siempre que haya un cambio de .h pero realmente no puedo recordar cuál era la forma estándar ....

En VC++ no tuviera que lidiar con esto, ya que el IDE era muy bueno en el manejo de dependencias ...

Respuesta

6

Mira automated dependencies. gcc con los indicadores -M -MD -MT etc. analizará su archivo y calculará las dependencias. Pasarlos a través de sed. Hay muchos ejemplos que google encontrará.

1

Como se menciona en @deinst, gcc tiene la capacidad de generar todos los archivos de encabezado que su cpp usa directa e indirectamente. Lo que necesita es más o menos siguiendo:

obj-file: src-file 

# dep file should be recreated each time header file or header file it depends on is changed 
dep-file: src-file 
    gcc -M ...... > dep-file 
    modify dep-file to make dep-file depend and all header files too 

include dep-file 

Se llevó a cabo una vez en proyecto en el que estaba comprometida, pero la aplicación plena de la idea fue largo y complicado uno.

Si tiene la posibilidad de considerar herramientas superiores que admiten la construcción de autodependencia como cmake o scons. Personalmente trabajé con cmake, cada programador puede escribir un archivo cmake y la autodependencia es gratis.

2

deinst e idimba lo llevan por el buen camino. Para leer sobre los riesgos potenciales que puede encontrar y cómo evitarlos, eche un vistazo a este artículo.

http://mad-scientist.net/make/autodep.html

+0

+1 por un buen enlace – dimba

Cuestiones relacionadas