У меня есть раздел make-файла, который имеет такую структуру:
bob:
ifdef DEBUG
@echo running
endif
@echo chug chug chug
ifdef DEBUG
@echo done
endif
bobit:
@echo "before"
@make bob
@echo "after"
Здесь я значительно упрощаю, все эхо на самом деле являются нетривиальными блоками команд, и есть более условные вещи, но это отражает суть моей проблемы.
По техническим причинам, я не хочу сейчас вдаваться, мне нужно избавиться от этого субмаха, но поскольку эхо представляет нетривиальные объемы кода, я не хочу просто копировать и пропускать тело Боба в место субмаки.
В идеале я хотел бы сделать что-то вроде этого
define BOB_BODY
ifdef DEBUG
@echo running
endif
@echo chug chug chug
ifdef DEBUG
@echo done
endif
endef
bob:
$(BOB_BODY)
bobit:
@echo "before"
$(BOB_BODY)
@echo "after"
К сожалению, условные выражения, похоже, меня терзают, они выдают ошибки "ifdef: Команда не найдена", я пытался обойти это с помощью различных комбинаций eval и call, но, похоже, не могу придумать, как это сделать работа.
Как мне заставить это работать? и это даже правильный подход к проблеме?