Вызов make изнутри make-файла

У меня есть Makefile, который отлично работает из новой оболочки, то есть:

make -C /dir/

Однако, если я вызываю этот Makefile из другого Makefile, он завершается ошибкой из-за некоторых сложных проблем с зависимостями. Make ясно знает вложенные вызовы, что видно по печати make[1]: и т.д., и я подозреваю, что make каким-то образом разделяет переменные со своим дочерним процессом.

Есть ли способ вызвать чистый make-файл из Makefile? Если моя сборка работает из чистой оболочки, должна быть возможность вызывать ее из другого файла Makefile, не обращаясь к ужасам внутри скрипта!:)

Спасибо!

2 ответа

make действительно разделяет часть своего окружения, когда он вызывается рекурсивно. Как предлагается в https://www.gnu.org/software/make/manual/html_node/Options_002fRecursion.html, вы можете написать свой рекурсивный вызов следующим образом:

sub-make:
        $(MAKE) -C /dir/ MAKEFLAGS=

и посмотрим, поможет ли это. Вы также можете управлять переменными, которые экспортируются в суб-марку, используя export а также unexport директивы ( https://www.gnu.org/software/make/manual/html_node/Variables_002fRecursion.html)

Было несколько переменных окружения в make вызывающего, что нарушало make вызываемого (CFLAGS и т.д...)

Мое решение состояло в том, чтобы изменить окружение в чистой оболочке и от точки вызова. Затем я вручную добавил проблемные переменные в список и создал несколько сценариев save_env/restore_env.

Спасибо!

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