Критерии: Makefile - это GNU Make Makefile. Меня не интересуют makepp, qmake, cmake и т.д. Они все хороши (особенно cmake), но это для работы и на работе мы используем GNU Make. Оптимальным решением является чистое решение Makefile, а не оболочка script, которая анализирует для вас.
Я также не хочу делать решение "продолжить сбой" - если он сломан, он сломан и нуждается в исправлении.
Ситуация такова: у меня есть makefile, который строит несколько каталогов параллельно - если один из них терпит неудачу, конечно, вся сборка выходит из строя, но только до тех пор, пока все запуски не завершится (или сбой). Это означает, что причина, по которой действительно произошел сбой, похоронили где-то произвольно далеко от конца вывода make.
Вот пример того, что у меня есть:
all: $(SUBDIRS)
SUBDIRS = \
apple \
orange \
banana \
pineapple \
lemon \
watermelon \
grapefruit
$(SUBDIRS):
cd [email protected] && $(MAKE) $(MFLAGS) 2>&1 | sed -e "s/^/$(notdir $(@)): /g"
Если я запустил make -j 5 и "оранжевый", произойдет неудача - я бы хотел увидеть таблицу, подобную этой в конце процесса make
apple - passed
orange - FAILED
banana - passed
pineapple - passed
lemon - passed
Я подумал, что у меня есть && эхо "прошло" > .result || echo "FAILED" > .result, но для выполнения команды TRAP или __onexit() необходимо выполнить некоторую команду очистки, чтобы печатать на них при выходе.
В любом файле makefile ninjas есть решение для чистого make файла для этого?
un-edit - мое решение на самом деле не работало так, как я надеялся.. STYMIED!