2010-05-29 17 views
16

Estoy probando lighttpd para un proyecto Linux incorporado. Obtuve el último paquete fuente y comencé a escribir un Makefile maestro que encapsula todas las cosas de configurar, compilar, instalar (para probar), etc.Autotools: cómo limpiar los archivos creados por "./configure" en el proyecto lighttpd?

Y viceversa, quiero limpiar cada paso. Después de la limpieza ya no debería haber archivos generados. Esto es importante para las pruebas repetitivas.

Me pregunto si hay una manera de hacer una limpieza completa de lo que ./configure generó? No estoy familiarizado con autotools en detalles.

¿Alguna pista?

+0

¿Consideró utilizar las herramientas de su software de control de origen para obtener un estado de limpieza de sus fuentes? –

+0

Bueno, actualmente mi máquina de prueba (virtual) (por cierto, Ubuntu 10.04) no usa el control de fuente. – Andi

Respuesta

23

Personalmente, realmente usaría las funciones de un software de control de fuente (debería usar uno) para esto. Esto haría la limpieza independiente de su proceso de construcción. Ver p. svn-cleanup o git clean.

Sin embargo, automake permite algunos ajustes cuando se eliminan los archivos. Esto tiene (intencionadamente) limitaciones incorporadas sobre qué archivos generados por autotools se pueden eliminar de esta manera. Eche un vistazo a the definitions for MOSTLYCLEANFILES, CLEANFILES, DISTCLEANFILES, and MAINTAINERCLEANFILES y ajuste su Makefile.am. Con ellos puede eliminar muchas cosas con

make mostlyclean 
make clean 
make distclean 
make maintainer-clean 

No podrá eliminar, p. Makefile o .deps/ de esta manera.

En cuanto a la fiabilidad de make clean, debería "funcionar al 100%" si se limita a especificar claramente sus archivos y evitar la intervención manual. De lo contrario, extend the cleanup rules.

+0

Gracias, Honk, voy a echar un vistazo a las partes sugeridas de la documentación. Si make clean works 99% y algunos archivos conocidos pueden eliminarse manualmente, esto estará bien. Surge otra pregunta: ¿es posible redirigir todos los resultados generados a un directorio de construcción específico (como CMake)? Esto sería útil para la limpieza, y para la construcción de diferentes plataformas, supongo? – Andi

+0

Ok, parece que un comando como "make mostlyclean clean distclean maintainer-clean" hará el trabajo! Un efecto divertido es que en el paquete lighttpd 2 los procesos de compilación modifican los archivos fuente: src/configparser.c y src/mod_ssi_exprparser.c. Pero solo el relatve incluye pathes. Tal vez estos archivos sean re-generados por el proceso de compilación. Gracias, Honk! – Andi

+2

@Andi: el uso de un directorio de compilación es muy similar al de cmake: 'mkdir build && cd build && $ CONF_PATH/.configure && make' –

3

Además de Benjamin Bannier's answer, los nombres de los archivos generados se pueden enumerar en .gitignore archivo para que se les ignora, no se realiza un seguimiento con git y no irritan y molestan cuando se ejecuta git status. No puede eliminar estos archivos con git clean. En este caso, yo personalmente uso el comando rm -rf * ; git checkout ..

¡Pero no lo use si tiene otros archivos ignorados que no quiere que se eliminen!

+3

** Puedes ** usar 'git clean' para eliminar archivos ignorados:' git clean -X'. –

Cuestiones relacionadas