В Makefile, как очистить файлы lockfile?
в GNU Make 3.81 мне нужно удалить файл блокировки в случае ошибки в любой части цепочки инструментов. Есть особая цель, которая позволит мне это сделать? Нужно ли писать сценарий-обертку?
в приведенном ниже примере мне нужно unlock_id, чтобы произошло, если правило для файла.не будут.
спасибо! - Джефф!--2-->
all: lock_id file.out unlock_id
file.out: file.in
file-maker < file.in > $@
lock_id:
lockfile file.lock
unlock_id:
rm -rf file.lock
3 ответов
Я бы сделал блокировку / разблокировку в той же цели, что и file-maker
:
file.out: file.in
lockfile $@.lock
file-maker < $< > $@; \
status=$$?; \
rm -f $@.lock; \
exit $$status
это выполняет file-maker
и разблокировки шаги в той же оболочке, сохраняя статус file-maker
так make
будет выполнена, если file-maker
не удается.
вы хотите .DELETE_ON_ERROR
target, который позволяет указать файлы, которые будут удалены при ошибках.
http://www.gnu.org/s/hello/manual/make/Special-Targets.html
редактировать
мой плохой, это полуправда. Это позволяет указать, что вы хотите, чтобы файлы были удалены, но для каких из них и при каких обстоятельствах, это до make
.