Makefile: преобразование рекурсивных вызовов make в последовательный поток - PullRequest
0 голосов
/ 15 августа 2011

У меня есть Makefile, который выполняется "gmake -f Makefile foo" и выглядит следующим образом.

foo:

                #set var = 1
                @$(MAKE) bar var=1

bar:

                #hello.mk is included
                @echo “success”

ifeq ($(var), 1)

                include test\hello.mk

endif

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

foo:

                $(eval var=1)
                @$(bar)

define bar

                include test\hello.mk #this doesn’t work
                @echo “success”
endef

Я не могу иметь оператор включения внутри функции или цели, поэтому как мне обойти эту проблему, чтобы сделать этот Makefile последовательнымбез звонков?

1 Ответ

0 голосов
/ 16 августа 2011

Краткий ответ: вы не можете сделать это.

Вы хотите создать 'foo' и 'bar' с тем, что в действительности являются разными make-файлами, что вы не можете сделать без рекурсивного вызова Make.

Если вы можете наложить некоторые ограничения на то, что может hello.mk, вы можете получить это за один проход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...