перенаправление make и shell в зависимости от состояния выхода - PullRequest
1 голос
/ 05 марта 2012

У меня есть правило make, которое генерирует файл зависимостей для списка источников. Это правило:

.depend: $(SRCS)
    $(CC) $(INCLUDE) -MM $^ | sed 's-^\(.*\):-$(OBJDIR)\/\1:-'> .depend

То, что я хочу: если gcc завершится неудачно для любого файла в $ (SRC), то .depend не должен создаваться. В настоящее время, если в исходном файле произойдет сбой gcc, я получу неполный .depend, который не будет восстановлен после устранения проблемы. Что я могу сделать? Я хотел бы избежать наличия файла .depend для каждого исходного файла

Ответы [ 2 ]

2 голосов
/ 05 марта 2012

Это должно работать:

.dependlist: $(SRCS)
    $(CC) $(INCLUDE) -MM $^ > $@

.depends: .dependlist
    sed 's-^\(.*\):-$(OBJDIR)\/\1:-' $< > $@
0 голосов
/ 05 марта 2012

Использование .DELETE_ON_ERROR цель:

.DELETE_ON_ERROR:
.depend: $(SRCS)
    $(CC) $(INCLUDE) -MM $^ | sed 's-^\(.*\):-$(OBJDIR)\/\1:-'> .depend

С здесь :

Если .DELETE_ON_ERROR упоминается какtarget в любом месте make-файла, затем make удалит цель правила, если оно изменилось, и его рецепт завершается с ненулевым статусом выхода, так же как и при получении сигнала.

...