Make: сбросить цели после рекурсии - PullRequest
0 голосов
/ 11 июля 2019

Make - красивый и мощный инструмент для широкого и разнообразного использования. Я люблю это, и это только деталь.

Предположим, у меня есть рекурсивный рецепт make, определенный следующим образом:

submake-cmd:
  make ${SUBMAKEGOALS} -C foo

# where I have derived ${SUBMAKEGOALS} earlier

И вот в чем суть: я могу настроить интерфейс make следующим образом ...

$: make submake-cmd SUBMAKEGOALS="foo bar"

- ИЛИ -

# preferably 
make submake-cmd foo bar biz baz

Единственная проблема заключается в том, что если я вычислю ${SUBMAKEGOALS}, то я вынужден написать правило submake-cmd, чтобы избежать непредсказуемого поведения:

submake-cmd:
  make ${SUBMAKEGOALS} -C foo
  exit 1

Такое, что make выйдет, и я увижу make exit с ошибкой.


Должен быть какой-то способ очистить цели make или указать, что make успешно завершен при использовании make recursion ...

У кого-нибудь есть идеи?

1 Ответ

1 голос
/ 12 июля 2019

предпочтительно

make submake-cmd foo bar biz baz

Вы, наверное, что-то обдумываете. Если вы хотите передать неизвестному количеству целей субмаки, то это можно сделать так:

ifneq ($(sub),)
.DEFAULT:
    $(MAKE) -C $(sub) $@
endif

А потом: make sub=dir1 foo; make sub=dir2 bar biz baz и т. Д. (Я предполагаю, что корневой make-файл не содержит ни одного собственного foo / bar / biz / baz; если это не так, то вы должны соответствующим образом исправить эти правила).

...