Tengo un makefile ligeramente hacker para la ejecución de pruebas:¿Por qué GNU make eliminar un archivo
### Run the tests
tests := tests/test1 tests/test2 ...
test: $(tests)
$(tests): %: %.c
gcc -o [email protected] $(testflags) $<
[email protected]
Funciona, pero las marcas Marca hacer algo que nunca he visto hacer antes. Mi prueba actualmente está rota y causa un error de bus. Haga la siguiente salida:
gcc -o tests/test1 [flags blah blah] tests/test1.c
tests/test1
make: *** [tests/test1] Bus error
make: *** Deleting file `tests/test1'
Tengo curiosidad acerca de la última línea. Nunca he visto Hacer eso antes. ¿Por qué Make elimina la prueba compilada?
Nota: he editado este ejemplo bastante para simplificarlo. Podría haber introducido algunos errores.
+1 por ser la única respuesta para señalar que el comportamiento fue causado por un archivo MAKE defectuoso que combinó la generación del programa de prueba y su ejecución en una sola regla. –
IMO esta es la mejor solución: limpiador y más "similar". Aunque, los detalles podrían manejarse más limpiamente. Primero, el autor del archivo MAKE debe decidir: ¿desea? Siempre ejecutar las pruebas, o solo ejecutar las pruebas si el archivo de prueba fue reconstruido (esto último es lo que hizo el ejemplo original). – MadScientist