Вы не можете перехватывать сигналы в make. Попробуйте использовать .INTERMEDIATE
для очистки и прочитайте 5.6 Прерывание или уничтожение make
all: test.out
test.out: test.tmp
sleep 10
test.tmp:
echo x>test.tmp
.PHONY: all
.INTERMEDIATE: test.tmp
Make ловит сигнал прерывания и удаляет такие файлы, если они являются частью графика и не существовали до запуска:
$ make
echo x>test.tmp
sleep 10
make: *** [Makefile:4: test.out] Interrupt
make: *** Deleting intermediate file 'test.tmp'
Если вам действительно нужно выполнить какую-то программу при выходе из make, создайте фоновый процесс при инициализации некоторой переменной и дождитесь завершения основного процесса make:
DUMMY := $(info launching the moniror process...)$(shell some-command& )