Может ли 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,

Другие вопросы по тегам