Может ли Makefile выполнять код ТОЛЬКО при возникновении ошибки?
В моем Makefile у меня есть некоторый код, который проверяет сетевое подключение. Этот код занимает приличное количество времени для запуска, и я хотел бы запустить его, только если другая цель не может быть построена.
Текущий Makefile
all: files network
# compile files
files:
# get files from network resources
network:
# check for network connectivity
# echo and return an error if it's not available
Порядок исполнения:
if not network:
# exit with error
if not files:
# exit with error
if not all:
# exit with error
Желаемый Makefile
В приведенном выше примере, я хотел бы network
цель должна быть "сделана", только если files
цель не может быть "сделана".
Порядок исполнения:
if not files:
if not network:
# exit with error
if not all:
# exit with error
1 ответ
Решение
Боюсь, рекурсивная модель - твой друг.
.PHONY: all
all:
${MAKE} files || ${MAKE} network
Если make files
Успешно, ваша работа завершена, и код выхода успешен. В случае неудачи код выхода для make network
,