En este momento, la fabricación de GNU no tiene soporte nativo.
Hay una solución fiable sin embargo:
.PHONY: internal-target external-target
external-target:
bash -c "trap 'trap - SIGINT SIGTERM ERR; <DO CLEANUP HERE>; exit 1' SIGINT SIGTERM ERR; $(MAKE) internal-target"
internal-target:
echo "doing stuff here"
Esto llama interrupciones, terminaciones y cualquier código de salida distinto de cero.
Tenga en cuenta $(MAKE)
, por lo que las anulaciones de línea de comando y las opciones de fabricación se pasan al submake.
En trampa:
- manejador trampa clara (con -)
- hacer la limpieza
- de salida con el código de salida distinto de cero, por lo que construir herramientas de automatización de reportar la acumulación fallado.
DELETE_ON_ERROR no funciona para directorios, así que esto es clave para la limpieza después de mktemp -d
, por ejemplo
Reemplazar <DO CLEANUP HERE>
con CMD válida.
+1 para la pregunta interesante, a pesar de que lo que está haciendo suena como una mala idea. – finnw