Makefile 如何将叮当声诊断保存到文件中?
我正在编写一个web服务器,主要是为了练习,并决定开始学习make和makefile。我的目标是自动构建我的vps,使用Clang/LLVM构建软件,并将诊断保存到文本文件中,以便脚本提交到我的电子邮件地址。我似乎无法实现的是将诊断保存到我的文件中 虽然我的Clang构建成功并生成了诊断,而且我的makefile似乎正常工作,但我未能从makefile内部和命令行重定向诊断 我的makefile(工作正常,但稍作修改以适应保存结果的需要): 我怀疑(这里我可能大错特错)发生这种情况是因为clang并没有真正返回诊断,它只是打印诊断。我不知道是否是这样,而《叮当用户指南》也没有这样的建议 [EDIT]:我玩了一下Clang,发现在成功编译时它返回0。我测试它的方法是:Makefile 如何将叮当声诊断保存到文件中?,makefile,clang,Makefile,Clang,我正在编写一个web服务器,主要是为了练习,并决定开始学习make和makefile。我的目标是自动构建我的vps,使用Clang/LLVM构建软件,并将诊断保存到文本文件中,以便脚本提交到我的电子邮件地址。我似乎无法实现的是将诊断保存到我的文件中 虽然我的Clang构建成功并生成了诊断,而且我的makefile似乎正常工作,但我未能从makefile内部和命令行重定向诊断 我的makefile(工作正常,但稍作修改以适应保存结果的需要): 我怀疑(这里我可能大错特错)发生这种情况是因为clan
$ clang <source_file.c>
$ echo $?
0
$clang
$echo$?
0
这表明我的理论可能是正确的,这使事情复杂化了:-\
有人能给我指出正确的方向吗?像其他程序一样,Clang将诊断结果输出到stderr。您可以将stderr重定向到stdout,如下所示:
Ironman :
clang -o Ironman src/Ironman.c > report 2>&1
伟大的我开始怀疑它可能会向stderr报告,但仍然不知道如何重定向stderr的输出。这对我来说很有用,但是你能解释一下报表2>&1到底做了什么吗?
2>&1
表示将输出2
(即stderr)重定向到输出1
(即stdout)。因此,打印到stderr输出的所有内容都被重定向到stdout,您通过执行>report
@NlightNFotis将stdout重定向到report
:只是为了澄清:重定向是一个shell特性,而不是Clang或make特性。make将整个线传递到shell;shell解释>报告
和2>&1
部分,并从传递给clang的参数列表中省略它们。因此,这些重定向和其他重定向都记录在shell的手册中。
Ironman :
clang -o Ironman src/Ironman.c > report 2>&1