如何追踪递归make?

时间:2010-02-22 04:07:06

标签: makefile trace recursion

我需要使用一个使用automake工具并递归的系统。

'make -n'只跟踪最高级别的make。

有没有办法让make在遇到make命令时执行make -n?

3 个答案:

答案 0 :(得分:3)

使用$(MAKE)来调用您的子制作文件,而不是使用make。这应该工作。查看手册中的How the MAKE variable works。这是一个简单的例子:

生成文件:

all:
    @$(MAKE) -f Makefile2

Makefile2:

all:
    @echo Makefile2

命令行:

$ make
Makefile2
$ make -n
make -f Makefile2
echo Makefile2
$

答案 1 :(得分:3)

你的递归makefile是这样的:

foo:
    make -C src1
    make -C src2

或者像这样:

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

如果您希望将标志传递给子make进程,我认为您需要使用第二种样式。可能是你的问题。

答案 2 :(得分:0)

将环境变量“MAKEFLAGS”设置为“n”可以满足您的需要。

这里有一些更高级的技巧来跟踪make命令: http://www.cmcrossroads.com/ask-mr-make/6535-tracing-rule-execution-in-gnu-make

最简单的一些技巧归结为在make命令中添加SHELL =“sh -x”(在这种情况下不使用“-n”运行)。