перенаправление вывода scons builder в файл - PullRequest
4 голосов
/ 22 декабря 2010

Я использую scons для создания проекта.Работает довольно хорошо.Но наши команды сборки просто выводят результаты на стандартный вывод, и мне нужно сделать это немного более полезным для нашей команды разработчиков программного обеспечения.

Вот поведение, которое я хотел бы, в порядке приоритета.Может ли кто-нибудь помочь мне реализовать их?

  1. Никаких реальных улучшений: scons > build-summary.txt - это просто перенаправляет стандартный вывод в файл.Да, я могу также перенаправить stderr, если я помню соответствующий синтаксис в моей системе (WinXP), но это не помогает мне отделить подробный вывод сборки от важных сводок о том, какие файлы собираются.

  2. Разделение сводной информации + подробная информация о сборке: получить stdout + stderr из всех команд сборки для перенаправления в указанный выходной файл (например, build-summary.txt), но оставить выходные данные самих scons, собираясьstdout / stderr.

  3. структурированный вывод сборки с использованием XML: получить stdout + stderr всех команд сборки для перенаправления в указанный выходной файл и сделать это в XMLформат, например, как показано ниже.Вывод уже достаточно многословен, так что мне все равно, есть ли накладные расходы на XML.Очевидно, что для включения в XML необходимо было бы экранировать содержимое stdout и stderr.

    <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 Ответ

3 голосов
/ 22 декабря 2010

Вам нужно будет поработать самостоятельно, чтобы получить правильное форматирование, но в вики SCons есть описание того, как управлять выводом командной строки для команд, которые запускает scons.

Чтобы получить вывод вашего компилятора в файл журнала, вы можете сделать что-то вроде фрагмента Buffered Output в середине страницы BuildLog .Вместо того, чтобы печатать командную строку и повторять stdout и stderr, вы можете записать их все в свой собственный файл журнала.

Извините, что оставляю вас наедине с деталями, но, возможно, этого достаточно для начала.

...