将scons builder输出重定向到文件

时间:2010-12-22 17:14:16

标签: scons

我正在使用scons来构建一个项目。效果很好。但是我们的构建命令只是向stdout发出结果,我需要让它对我们的软件团队更有用。

以下是我想要的行为,按优先顺序排列。有人可以帮我实现吗?

  1. 没有真正的改进:scons > build-summary.txt - 这只是将stdout重定向到文件。是的,如果我记得我的系统(WinXP)上的相应语法,我也可以重定向stderr,但它无法帮助我将详细的构建输出与构建哪些文件的重要摘要分开。

  2. 摘要+详细构建信息的分离:获取所有构建命令的stdout + stderr以重定向到指定的输出文件(例如build-summary.txt),但保留scons的输出本身去了stdout / stderr。

  3. 使用XML的结构化构建输出:获取所有构建命令的stdout + stderr以重定向到指定的输出文件,并以XML格式执行此操作,例如:如下。输出已经足够冗长,我不在乎是否有XML开销。显然,stdout和stderr的内容需要转义才能包含在XML中。

    <build-step builder="Compiler">
      <output>c:/foo/someFile.obj</output>
      <input>c:/foo/someFile.cpp c:/foo/someFile.h</input>
      <command>cc someFile.cpp -l someLib.lib ...</command>
      <stdout>Remark: you should be using lint</stdout>
      <stderr>Warning: variable foo was declared but never referenced</stderr>
    </build-step>
    <build-step builder="Compiler">
      <output>c:/foo/someFile.exe</output>
      <input>c:/foo/someFile.obj c:/foo/otherFile.obj</input>
      <command>cc -o someFile.exe someFile.obj otherFile.obj</command>
      <stdout>Success! Hurray!</stdout>
      <stderr></stderr>
    </build-step>
    

1 个答案:

答案 0 :(得分:3)

你必须自己做一些工作才能获得正确的格式,但SCons wiki上有关于如何{s}运行命令control command line output的描述。

为了将编译器的输出输入到日志文件中,您可以在BuildLog wiki页面的中间执行类似缓冲输出片段的操作。您可以将它们全部写入您自己的日志文件,而不是打印命令字符串并重复执行stdout和stderr。

很抱歉让您自己了解详细信息,但也许这足以让您开始使用。