SCons:保存/重定向gcc文本输出(警告)

Ear*_*one 6 gcc scons io-redirection

我正在使用SCons在工作中构建一个项目,我正在尝试解析GCC的文本输出,以便为每个目标编写所有编译器警告的摘要报告,因为我们的构建脚本很长,并且有一个很多文本输出到控制台.

我搜索谷歌和这个网站已经有一段时间了,我找不到SCons内置的方法来实现这一目标.我已经尝试将整个stdout和stderr流重定向到每个示例的文件,但只捕获SCons本身的输出而不是它调用的任何工具的输出.

我的下一个想法是找到SCons编译参数以发送到GCC并将重定向添加到参数字符串末尾的位置.看完文档后,似乎构造变量CCCOMCXXCOM包含用于编译的命令行.但是,当我将下面的行添加到我的SConstruct时,SCons正在执行命令行中没有任何更改.

baseEnv['CCCOM'] += " 2> gcc-c-output.txt"
baseEnv['CXXCOM'] += " 2> gcc-cxx-output.txt"
Run Code Online (Sandbox Code Playgroud)

有效的一件事是在整个SCons命令上重定向stderr流:

scons 2> stderr.txt
Run Code Online (Sandbox Code Playgroud)

但是,我想避免这种情况,并尽可能包含SCons中的所有内容.输出也不一定要转到文件.它可以保存在任何地方,只要我可以访问它来解析并保存到构建结束时的文件.

我已经搜索了这么久,没有提出任何问题,所以我不知道还有什么可以尝试的.我不得不相信我不是第一个想做这样的事情的人.

Ear*_*one 5

当我弄清楚自己做错了什么时,我会在这里回答我自己的问题.在CCCOMCXXCOM变量是正确的参数进行修改,但问题是我创建共享库的对象,所以没有被使用这些变量.我应该修改的是SHCCCOMSHCXXCOM.

以下代码完成了重定向GCC警告输出的工作(警告和错误仅写入stderr):

baseEnv['SHCCCOM'] += " 2> gcc-c-output.txt"
baseEnv['SHCXXCOM'] += " 2> gcc-cxx-output.txt"
Run Code Online (Sandbox Code Playgroud)

希望这个答案能够帮助其他人,因为在搜索时我找不到关于这个主题的更多信息.