我有一个项目,使用 make 构建,我希望增加可能性 分析警告信息的整体状态。
我的想法是更改 make 规则,以便在完全重建期间将 stderr 编译输出复制到单独的文件中。意味着每次完成所有时,所有输出都将打印在控制台中,此外 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 为 Windows 编写,我从指定的link获取PA(谢谢)。
答案 0 :(得分:0)
我不了解Windows,但您可以在Linux中使用tee
命令执行此操作。 tee用于将STDOUT重定向到文件以及控制台,这样您就可以利用它并检查是否可以解决问题。
make all 2>&1 1>stdout.log | tee stderr.log
将STDERR
重定向到STDOUT
,将STDOUT
重定向到stdout.log
,并将所有STDERR
复制到stderr.log
并在控制台上回显为好。
但解决方案尚未完成。 STDOUT
未在控制台上打印,只会复制到stdout.log
。尝试使用您将获得解决方案的命令。
答案 1 :(得分: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
导出到文件,然后显示该文件的内容。
希望有所帮助。