有没有一种简单的方法来COLOR-CODE编译器输出?

Ann*_*own 37 gcc g++ ansi-colors

gcc(或其他编译器)经常生成大量文本输出,很难看出错误在哪里或错过警告.我已经做了一些搜索,但是没有找到一个干净的简单解决方案来对编译器输出进行颜色编码(所以例如警告是黄色,错误是红色等等......)

小智 28

Gcc 4.9似乎通过-fdiagnostics-color标志添加了这个功能:


Rez*_*aee 25

如果你正在寻找一些非常简单的东西,这里有另一种选择:

#!/bin/bash -e

make ${@} 2>&1 | perl -wln -M'Term::ANSIColor' -e '
m/Building|gcc|g++|\bCC\b|\bcc\b/ and print "\e[1;32m", "$_", "\e[0m"
or
m/Error/i and print "\e[1;91m", "$_", "\e[0m"
or
m/Warning/i and print "\e[1;93m", "$_", "\e[0m"
or
m/Linking|\.a\b/ and print "\e[1;36m", "$_", "\e[0m"
or
print; '
Run Code Online (Sandbox Code Playgroud)

只需将您的make替换为此脚本,并确保它是可执行的...

  • 似乎是在我的mac os x上工作.坦克 (2认同)
  • 希望我可以投票十几次.也适用于Cygwin. (2认同)
  • 只是想说这太棒了,就像一个魅力,但是因为它当前打字我得到一个关于"正则表达式中的嵌套量词"的错误,并通过在"g ++"中将'\'添加到'+'来修复它并且它之后运行得很好那. (2认同)

Bas*_*tch 15

Debian和Ubuntu colorgcc为此提供了包.

我通常运行gcc(和make)通emacsM-x compile则消息是彩色的.

附加物

GCC 4.9有一个原生的着色设施,GCC 6-- 2016年4月底发布 - (也可能是GCC 5)默认启用它(当stdout是终端时).

  • 为了完整起见,需要在CFLAGS中传递`-fdiagnostics-color = always`. (4认同)

zau*_*ufi 12

好的,我只是留下关于我自己的(基于python的)工具的通知:)

它被称为可插拔输出处理器,不仅用于着色一个特定程序的输出.以下是GCC输出示例:

可插拔输出处理器之前 后: 可插拔输出处理器之前


Cha*_*esB 11

请参阅colorgcc,这是一个可以提供gcc输出的perl脚本.