记录调用make的命令

时间:2010-03-10 08:58:21

标签: makefile

有没有办法记录命令,调用编译程序?我知道参数-n-p,但它们要么不解决if-conditions,要么只打印出来。或者,当在Makefile中调用“make”时,它们不起作用。

5 个答案:

答案 0 :(得分:10)

make SHELL="sh -x"

将导致shell(调用它来评估shell结构)打印有关它正在做什么的信息,让你看看如何评估shell命令中的任何条件。

答案 1 :(得分:3)

将它执行的每个命令写入控制台,所以

make 2>&1 | tee build.log

将创建一个名为build.log的日志文件作为副作用,其中包含写入屏幕的相同内容。 (man tee了解更多详情。)

2>&1将标准输出和错误合并到一个流中。如果你没有包含它,常规输出将进入日志文件,但错误只会发送到控制台。 (make仅在命令返回错误代码时写入stderr。)

如果你想完全取消输出以支持记录到文件,它甚至更简单:

make 2>&1 > build.log

因为这些只是捕获控制台输出,所以它们可以正常地使用递归make

答案 2 :(得分:2)

您可以尝试使用strace

记录execve次来电
strace -f -e execve make ...

答案 3 :(得分:1)

您是否尝试过-d参数(debug)?

请注意,您可以使用--debug控制信息量。例如, - debug = a(与-d相同)或--debug = b仅显示基本信息......

答案 4 :(得分:1)

您可能会在SparkBuild生成的带注释的构建日志中找到您要查找的内容。这包括构建中执行的每个规则的命令,无论是否使用“@”来阻止make打印命令行。

你对if条件的评论有点令人困惑:你在谈论shell构造,还是构造构造?如果你的意思是shell结构,我认为没有任何方法可以让你得到你正在追求的东西,除非使用strace作为其他描述。如果你的意思是make构造,那么你看到的输出是解析的条件表达式的结果。