Make-如何在不抑制其他输出的情况下抑制make错误消息

山姆·马里内利(Sam Marinelli)

我正在实现一个简单的构建系统,该系统实际上只是Make的包装。由于此构建系统已经发出了自己的错误消息,因此我不希望Make产生类似以下的错误消息

make: *** [/cool/makefile:116: /fun/target.o] Error 1

失败。

我已经在使用该-s标志来禁止大部分Make的输出了。而且我不想让Make忽略错误;我仍然希望它停止并退出并显示一个状态。我不能随便杀死所有错误输出,make 2> /dev/null因为我仍想查看stderrMake正在运行的任务打印的消息

有没有一种方法,而无需手动分析和清理Make的输出?我正在使用GNU Make 4.2.1,并且不介意GNU Make特定的解决方案。

吉勒斯“别再邪恶了”

由于您的系统是make的包装器,因此我假设它会生成makefile。调整生成器以添加2>&3到makefile中的所有shell命令中,并使程序将文件描述符3重定向到标准错误(文件描述符2),并将文件描述符2重定向到/dev/null这样,make程序本身将打印到其标准错误(转到)/dev/null,而构建命令将打印到其标准错误(转到包装程序的标准错误)。

如果您使用的是手写的Makefile,则可以对其进行转换以添加这些重定向,前提是该Makefile在语法上不会变得太过疯狂(例如,没有花哨的GNU make宏可以生成命令)。对于以制表符(可选)@开头的每行-,并且前一行不以反斜杠结尾的行,请exec 2>&3;在制表符和可选的之后添加@-

除了更改makefile之外,您还可以使用参数调用它,SHELL=/path/to/shell_wrapper其中whereshell_wrapper是将其标准错误重定向到另一个描述符的方式执行其参数,如下所示:

#!/bin/sh
eval "$2" 2>&3

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不抑制正常输出的情况下抑制Mavens INFO垃圾邮件?

来自分类Dev

如何在不抑制终端输出的情况下记录来自终端的bash脚本的输出?

来自分类Dev

如何在不中断make过程的情况下中断make中的过程

来自分类Dev

make——我可以抑制格式截断错误吗?

来自分类Dev

在没有makefile的情况下如何设置“ make”命令?

来自分类Dev

如何在不使用auto的情况下声明std :: make_tuple结果的类型

来自分类Dev

如何在不安装ui的情况下使(make:auth)Laravel 6 for api

来自分类Dev

如何在不使用install.txt的情况下使用make

来自分类Dev

abas-ERP:如何在不使用.make-command的情况下创建数据集

来自分类Dev

如何在没有互联网连接的情况下安装“Make”?

来自分类Dev

仅在命令成功的情况下如何抑制输出?

来自分类Dev

使用makefile进行编译时,如何在不使用命令“ make clean”的情况下清除目标文件?

来自分类Dev

如何在没有标准身份验证的情况下使用 laravel RegisterController (php artisan make:Auth)

来自分类Dev

在这种情况下,元素li不能作为div元素的子元素。(抑制此子树中的其他错误。)

来自分类Dev

在这种情况下,元素li不能作为div元素的子元素。(抑制此子树中的其他错误。)

来自分类Dev

在没有Make的情况下安装tarball?

来自分类Dev

如何让Make在没有自己的Makefile的情况下查找和递归子目录?

来自分类Dev

如何使diff与其他程序输出中的重定向工作在make中工作

来自分类Dev

仅抑制实际的 make 命令和最终的打印语句

来自分类Dev

验证错误:在这种情况下,元素hr不能作为元素ul的子元素。(抑制此子树中的其他错误。)

来自分类Dev

验证错误:在这种情况下,元素hr不能作为元素ul的子元素。(抑制此子树中的其他错误。)

来自分类Dev

如何在没有make的情况下在ubuntu上安装python 2.6.6

来自分类Dev

在这种情况下,不允许将元素p作为元素dl的子元素。(抑制此子树中的其他错误。)

来自分类Dev

在这种情况下,不允许将元素a作为元素ul的子元素。(抑制此子树中的其他错误。)

来自分类Dev

如何在不添加其他tspan的情况下重置SVG tspan定位

来自分类Dev

如何在不破坏其他内容的情况下修复“ element.dispatchEvent不是函数”?

来自分类Dev

如何在不导致iTunes /其他音频暂停的情况下播放视频

来自分类Dev

如何在不创建其他样式的情况下居中放置文本

来自分类Dev

如何在不执行其他查询的情况下使图表中的计数与众不同?

Related 相关文章

  1. 1

    如何在不抑制正常输出的情况下抑制Mavens INFO垃圾邮件?

  2. 2

    如何在不抑制终端输出的情况下记录来自终端的bash脚本的输出?

  3. 3

    如何在不中断make过程的情况下中断make中的过程

  4. 4

    make——我可以抑制格式截断错误吗?

  5. 5

    在没有makefile的情况下如何设置“ make”命令?

  6. 6

    如何在不使用auto的情况下声明std :: make_tuple结果的类型

  7. 7

    如何在不安装ui的情况下使(make:auth)Laravel 6 for api

  8. 8

    如何在不使用install.txt的情况下使用make

  9. 9

    abas-ERP:如何在不使用.make-command的情况下创建数据集

  10. 10

    如何在没有互联网连接的情况下安装“Make”?

  11. 11

    仅在命令成功的情况下如何抑制输出?

  12. 12

    使用makefile进行编译时,如何在不使用命令“ make clean”的情况下清除目标文件?

  13. 13

    如何在没有标准身份验证的情况下使用 laravel RegisterController (php artisan make:Auth)

  14. 14

    在这种情况下,元素li不能作为div元素的子元素。(抑制此子树中的其他错误。)

  15. 15

    在这种情况下,元素li不能作为div元素的子元素。(抑制此子树中的其他错误。)

  16. 16

    在没有Make的情况下安装tarball?

  17. 17

    如何让Make在没有自己的Makefile的情况下查找和递归子目录?

  18. 18

    如何使diff与其他程序输出中的重定向工作在make中工作

  19. 19

    仅抑制实际的 make 命令和最终的打印语句

  20. 20

    验证错误:在这种情况下,元素hr不能作为元素ul的子元素。(抑制此子树中的其他错误。)

  21. 21

    验证错误:在这种情况下,元素hr不能作为元素ul的子元素。(抑制此子树中的其他错误。)

  22. 22

    如何在没有make的情况下在ubuntu上安装python 2.6.6

  23. 23

    在这种情况下,不允许将元素p作为元素dl的子元素。(抑制此子树中的其他错误。)

  24. 24

    在这种情况下,不允许将元素a作为元素ul的子元素。(抑制此子树中的其他错误。)

  25. 25

    如何在不添加其他tspan的情况下重置SVG tspan定位

  26. 26

    如何在不破坏其他内容的情况下修复“ element.dispatchEvent不是函数”?

  27. 27

    如何在不导致iTunes /其他音频暂停的情况下播放视频

  28. 28

    如何在不创建其他样式的情况下居中放置文本

  29. 29

    如何在不执行其他查询的情况下使图表中的计数与众不同?

热门标签

归档