我需要使用一个使用automake工具并递归的系统。
'make -n'只跟踪最高级别的make。
有没有办法让make在遇到make命令时执行make -n?
答案 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”运行)。