有没有办法记录命令,调用编译程序?我知道参数-n
和-p
,但它们要么不解决if-conditions,要么只打印出来。或者,当在Makefile中调用“make”时,它们不起作用。
答案 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)
答案 3 :(得分:1)
您是否尝试过-d参数(debug)?
请注意,您可以使用--debug控制信息量。例如, - debug = a(与-d相同)或--debug = b仅显示基本信息......
答案 4 :(得分:1)
您可能会在SparkBuild生成的带注释的构建日志中找到您要查找的内容。这包括构建中执行的每个规则的命令,无论是否使用“@”来阻止make打印命令行。
你对if条件的评论有点令人困惑:你在谈论shell构造,还是构造构造?如果你的意思是shell结构,我认为没有任何方法可以让你得到你正在追求的东西,除非使用strace作为其他描述。如果你的意思是make构造,那么你看到的输出是解析的条件表达式的结果。