我正在使用 SCons在工作中构建一个项目,我正在尝试解析 GCC 的文本输出,以便为每个目标生成所有编译器警告的摘要报告,因为我们的构建脚本很长,并且有很多文本输出要控制台。
我已经在谷歌和这个网站上搜索了很长一段时间,但我找不到 SCons 内置的方法来实现这一点。我试过将整个 stdout 和 stderr 流重定向到一个文件 this example ,但只捕获 SCons 本身的输出,而不是它调用的任何工具的输出。
我的下一个想法是找到 SCons 在哪里编译要发送到 GCC 的参数,并将重定向添加到参数字符串的末尾。看了文档,好像是构造变量CCCOM
和 CXXCOM
包含用于编译的命令行。但是,当我将下面的行添加到我的 SConstruct 时,SCons 正在执行的命令行中没有任何变化。
baseEnv['CCCOM'] += " 2> gcc-c-output.txt"
baseEnv['CXXCOM'] += " 2> gcc-cxx-output.txt"
有效的一件事是在整个 SCons 命令上重定向 stderr 流:
scons 2> stderr.txt
但是,我想避免这种情况,并尽可能将所有内容都包含在 SCons 中。输出也不一定必须转到文件。只要我可以访问它以在构建结束时解析并保存到文件,它就可以保存在任何地方。
我已经搜索了这么长时间,但一无所获,所以我不知道还能尝试什么。我必须相信我不是第一个想做这样的事情的人。
最佳答案
当我发现我做错了什么时,我将在这里回答我自己的问题。 CCCOM
和 CXXCOM
变量是要修改的正确变量,但问题是我正在创建共享库对象,因此没有使用这些变量。我应该修改的是 SHCCCOM
和 SHCXXCOM
.
以下代码完成了重定向 GCC 警告输出的工作(警告和错误仅写入 stderr):
baseEnv['SHCCCOM'] += " 2> gcc-c-output.txt"
baseEnv['SHCXXCOM'] += " 2> gcc-cxx-output.txt"
希望这个答案能帮助其他人,因为我在搜索时找不到关于这个主题的太多信息。
关于gcc - SCons:保存/重定向 gcc 文本输出(警告),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11139519/