Как отследить рекурсивную марку? - PullRequest
0 голосов
/ 22 февраля 2010

Мне нужно работать в системе, которая использует инструменты automake и делает рекурсивно.

'make -n' отслеживает только верхний уровень make.

Есть ли способ заставить make выполнить make -n всякий раз, когда он встречает команду make?

Ответы [ 3 ]

3 голосов
/ 22 февраля 2010

Ваш рекурсивный make-файл выглядит так:

foo:
    make -C src1
    make -C src2

Или вот так:

foo:
    ${MAKE} -C src1
    ${MAKE} -C src2

Я думаю, вам нужно использовать второй стиль, если вы хотите, чтобы флаги передавались дочерним процессам make. Может быть ваша проблема.

3 голосов
/ 22 февраля 2010

Используйте $(MAKE) для вызова ваших субмакейлов, вместо использования make. Это должно работать. Посмотрите Как переменная MAKE работает в руководстве. Вот быстрый пример:

Makefile:

all:
    @$(MAKE) -f Makefile2

Makefile2:

all:
    @echo Makefile2

Командная строка:

$ make
Makefile2
$ make -n
make -f Makefile2
echo Makefile2
$
0 голосов
/ 17 апреля 2010

Установка переменной среды "MAKEFLAGS" на "n" может сделать то, что вам нужно.

Здесь есть несколько более продвинутых приемов для отслеживания команд make: http://www.cmcrossroads.com/ask-mr-make/6535-tracing-rule-execution-in-gnu-make

Самый простой из этих приемов сводится к добавлению SHELL = "sh -x" к вашей команде make (в этом случае выполняется без "-n").

...