A questo punto, GNU make non ha supporto nativo.
C'è una soluzione affidabile per quanto:
.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"
Questa cattura interruzioni, cessazioni e gli eventuali codici di uscita diverso da zero.
Nota il $(MAKE)
in modo che la riga di comando si sovrascriva e le opzioni vengono passate a submake.
Su trappola:
- gestore di trap chiaro (con -)
- fare la pulizia
- uscita con diverso da zero stato di uscita, in modo da costruire strumenti di automazione segnalare la generazione non riuscita.
DELETE_ON_ERROR non funziona per le directory, quindi questa è la chiave per la pulizia dopo mktemp -d
, ad esempio
Sostituire <DO CLEANUP HERE>
con valida CMD.
+1 per la domanda interessante, anche se quello che stai facendo sembra una cattiva idea. – finnw