0

我有一个项目,它使用make构建,我想增加分析警告消息整体状态的可能性。

我的想法是更改make规则,以便在完全重建期间将stderr编译输出复制到单独的文件中。意味着每次make all 都将完成,所有输出都将打印在控制台中,此外stderr输出将复制到单独的文件中。

此警告报告文件将添加到存储库中,以便我可以比较存储库中存在的警告和本地警告。

问题是如何将 stderr 输出复制(而不是重定向)到单独的文件中?意味着我应该如何更改Makefile中的所有目标?

我知道如何重定向stderr输出(make all 2>warning_report.txt),但这不是我需要的。警告消息应该在主控制台输出和警告文件中。

我使用Windows 7作为工作环境,但我之前没有处理过Windows命令行或批处理文件。

提前致谢。

编辑:

在我的情况下,最终解决方案如下所示:

make all 3>&1 1>&2- 2>&3- | tee.bat warning_report.txt

在这种情况下,脚本tee.bat是用JScript for Windows编写的,我取自PA 指定的链接(谢谢)。

交换呢,我从这里这里拿走了。

4

2 回答 2

0

我不了解 Windows,但您可以tee在 Linux 中使用命令来完成。tee 用于将 STDOUT 重定向到文件和控制台,以便您可以利用它并检查是否可以解决您的问题。

make all 2>&1 1>stdout.log | tee stderr.log

重定向STDERRSTDOUT,重定向STDOUTstdout.log,所有的STDERR都被复制到stderr.log控制台上回显的ans。

但解决方案还不完整。不会打印在控制台上,STDOUT而只会复制到stdout.log. 尝试使用您将得到解决方案的命令。

于 2013-03-07T10:40:37.777 回答
0

我刚刚重新阅读了您的问题,并决定尝试回答。

这是一个用于导出stderr和显示它的片段。

@echo off
if exist stderr.error del stderr.error
this_is_not_a_command 2>stderr.error
if exist stderr.error type stderr.error & del stderr.error

这将导出stderr到一个文件,然后显示该文件的内容。

希望有帮助。

于 2013-03-08T06:14:27.217 回答