【发布时间】:2010-02-22 04:07:06
【问题描述】:
我需要在一个使用自动制作工具并递归制作的系统上工作。
'make -n' 只跟踪顶层的 make。
有没有办法让make在遇到make命令时执行make -n?
【问题讨论】:
我需要在一个使用自动制作工具并递归制作的系统上工作。
'make -n' 只跟踪顶层的 make。
有没有办法让make在遇到make命令时执行make -n?
【问题讨论】:
使用$(MAKE) 调用您的子makefile,而不是使用make。那应该行得通。查看手册中的How the MAKE variable works。这是一个简单的例子:
生成文件:
all:
@$(MAKE) -f Makefile2
Makefile2:
all:
@echo Makefile2
命令行:
$ make
Makefile2
$ make -n
make -f Makefile2
echo Makefile2
$
【讨论】:
你的递归 makefile 看起来像这样吗:
foo:
make -C src1
make -C src2
或者像这样:
foo:
${MAKE} -C src1
${MAKE} -C src2
如果您希望将标志传递给子 make 进程,我认为您需要使用第二种样式。可能是你的问题。
【讨论】:
将环境变量“MAKEFLAGS”设置为“n”可能会满足您的需要。
这里有一些更高级的跟踪 make 命令的技巧: http://www.cmcrossroads.com/ask-mr-make/6535-tracing-rule-execution-in-gnu-make
这些技巧中最简单的就是将 SHELL="sh -x" 添加到您的 make 命令(在这种情况下不使用“-n”运行)。
【讨论】: