Эквивалент команды TRAP в GNU Makefile для краткой идентификации сбоя сборки при выходе

Критерии: Makefile - это GNU Make Makefile - меня не интересуют makepp, qmake, cmake и т. Д. Все они хороши (особенно cmake), но это для работы и для работы мы используем GNU Make. Оптимальное решение - это чистый файл Makefile, а не сценарий оболочки, который анализирует make за вас.

Я также не хочу использовать решение «продолжить при сбое» - если оно сломано, значит, оно не работает и требует исправления.

Ситуация такова, что у меня есть make-файл, который создает несколько каталогов в параллельный - если один из них выходит из строя, конечно, вся сборка терпит неудачу, но не до тех пор, пока все выполнение не завершится (или не завершится). Это означает, что причина, по которой make действительно потерпела неудачу, скрыта где-то произвольно далеко от конца вывода make.

Вот пример того, что у меня есть:

all: $(SUBDIRS)

SUBDIRS = \
  apple \
  orange \
  banana \
  pineapple \
  lemon \
  watermelon \
  grapefruit

$(SUBDIRS):
  cd $@ && $(MAKE) $(MFLAGS) 2>&1 | sed -e "s/^/$(notdir $(@)): /g"

Если я запустил make -j 5 и orange происходит сбой - хотелось бы видеть в конце такую ​​таблицу процесса make

  apple     - passed
  orange    - FAILED
  banana    - passed
  pineapple - passed
  lemon     - passed

Я подумал о том, чтобы && echo "прошло"> .result || echo "FAILED"> .result,но make по-прежнему нуждается в какой-то команде очистки TRAP или __onexit (), чтобы печатать на них при выходе.

У кого-нибудь из ниндзя Makefile есть решение на основе чистого makefile для этого?

un-edit - мое решение на самом деле не работало так, как я надеялся .. STYMIED!

10
задан synthesizerpatel 21 June 2011 в 01:45
поделиться