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

标签 gcc scons io-redirection

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

我已经在谷歌和这个网站上搜索了很长一段时间,但我找不到 SCons 内置的方法来实现这一点。我试过将整个 stdout 和 stderr 流重定向到一个文件 this example ,但只捕获 SCons 本身的输出,而不是它调用的任何工具的输出。

我的下一个想法是找到 SCons 在哪里编译要发送到 GCC 的参数,并将重定向添加到参数字符串的末尾。看了文档,好像是构造变量CCCOMCXXCOM包含用于编译的命令行。但是,当我将下面的行添加到我的 SConstruct 时,SCons 正在执行的命令行中没有任何变化。

baseEnv['CCCOM'] += " 2> gcc-c-output.txt"
baseEnv['CXXCOM'] += " 2> gcc-cxx-output.txt"

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

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

我已经搜索了这么长时间,但一无所获,所以我不知道还能尝试什么。我必须相信我不是第一个想做这样的事情的人。

最佳答案

当我发现我做错了什么时,我将在这里回答我自己的问题。 CCCOMCXXCOM变量是要修改的正确变量,但问题是我正在创建共享库对象,因此没有使用这些变量。我应该修改的是 SHCCCOMSHCXXCOM .

以下代码完成了重定向 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/

相关文章:

c - 为什么我在使用 GCC 编译时不必包含我的头文件?

assembly - 如果没有在 ASM 模板中指定,那么提供输入和输出操作数有什么意义呢?

touch - 相当于 scons 中的 "touch"?

shell - 为什么在 Unix 中通过 I/O 重定向读取和写入同一个文件会导致一个空文件?

c++ - 有双向管道之类的东西吗?我希望输入和输出在两个简单程序之间交互

c - 如何将 c 函数注入(inject)或动态加载到另一个 c 程序中

c++ - 异常未被销毁

python - 在 python3 中编译 SCons

python - scons 自定义决策函数是否需要成为类成员?

linux - 为什么 "mycommand >>file1 >>file2"不附加到两个文件?