Gcc 有没有一种简单的方法对编译器输出进行颜色编码?

Gcc 有没有一种简单的方法对编译器输出进行颜色编码?,gcc,g++,ansi-colors,Gcc,G++,Ansi Colors,gcc(或其他编译器)通常会生成大量文本输出,很难看到错误在哪里或错过警告。我做了一些搜索,但没有找到一个干净简单的解决方案来对编译器输出进行颜色编码(例如警告是黄色的,错误是红色的等等)。Debian和Ubuntu为此提供了colorgcc包 我通常使用M-x compile通过emacs运行gcc(和make),然后将消息着色 附录 有一个本机着色功能,并于2016年4月底发布(可能也是),默认情况下启用它(当stdout是终端时)。请参阅一个用于显示gcc输出的perl脚本。如果您正在寻找

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

Debian和Ubuntu为此提供了
colorgcc

我通常使用
M-x compile
通过
emacs
运行
gcc
(和
make
),然后将消息着色

附录
有一个本机着色功能,并于2016年4月底发布(可能也是),默认情况下启用它(当stdout是终端时)。

请参阅一个用于显示gcc输出的perl脚本。

如果您正在寻找非常简单的东西,这里有一个替代方案:

#!/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; '
只需将make别名为这个脚本,并确保它是可执行的…

您可以使用这是一个Ruby工具,它将实时将GCC输出转换为颜色。现在您有两个选择:Perl脚本(colorGCC)或GilCC,如果您已经使用Ruby,您将喜欢GilCC

GilCC独有;GilCC有警告和错误计数器,还显示编译时,当您试图改进时非常方便。因为它是Ruby的,所以它是跨平台的。它是灵活的,你可以添加更多的宝石来定制它,无论你想要什么

下载页面的链接在这里


通过
-fdiagnostics color
标志:

虽然GCC 4.9有-fdiagnostics color选项来启用对终端的彩色输出,但我创建了一个名为“”的小工具来获得彩色编译器输出


它还支持来自
make
的输出。如果有人需要,我可以为其他工具添加着色模式。

好的,我也会留下一个关于我自己(基于python)工具的通知:)

它的调用和设计不仅仅是为了给一个特定程序的输出着色。以下是之前的GCC输出示例:

之后:

如何安装和使用colorgcc为gcc编译器输出着色: 到目前为止,这里至少有3个答案提到了,但没有一个解释如何安装它!(这并不明显)。下面介绍如何在Ubuntu中安装最新版本

  • 转到并单击“克隆或下载”-->“下载Zip”。我将它保存到“~/Downloads/Install\u文件”中
  • 在您的文件浏览器中导航到它,右键单击它,然后转到“此处提取”。我现在有一个名为“~/Downloads/Install\u Files/colorgc master”的目录
  • 将“colorgcc.pl”脚本复制到“/usr/bin/colorgcc”以“安装”它(确保根据上面提取它的位置使用正确的目录):
    sudo cp~/Downloads/install\u Files/colorgcc master/colorgcc.pl/usr/bin/colorgcc
  • 使其可执行:
    sudo chmod+x/usr/bin/colorgcc
  • 如果“~/bin”目录尚不存在,则创建该目录:
    mkdir~/bin
  • *创建指向“/usr/bin/colorgcc”的符号链接,以便无论何时调用
    gcc
    g++
    它都会自动调用
    colorgcc
    • ln-s/usr/bin/colorgcc~/bin/g++
    • ln-s/usr/bin/colorgcc~/bin/gcc
    • (如果您出于某种原因想要卸载colorgcc,只需删除这些符号链接“~/bin/g++”和“~/bin/gcc”,以及Perl脚本“/usr/bin/colorgcc”,就完成了)
  • 完成了 下面是一个示例
    g++
    输出,我现在调用
    g++-Wall-std=c++11 time\u until\u overflow\u 2.cpp-o time\u until\u overflow\u 2

    *注意:只有当“~/bin”位于实际的
    gcc
    g++
    可执行文件所在文件夹之前的PATH变量中时,才能在“~/bin”中创建这些符号链接。要确保路径中有“~/bin”,可以使用以下命令查看路径变量内容:
    echo$path
    。如果在路径的开头没有看到“/home/YOUR_USERNAME/bin”,请将其添加为:
    export path=~/bin:$path

    参考资料:

    更多信息请参见此处。对于我最初学习这些步骤的地方:。谢谢伊姆兰·范纳斯瓦拉


    也~

    ;(也可以试试叮当声,颜色都是自己输出的,而且有很好的诊断功能)最近的GCC能够提供颜色信息。不过为了完整起见,我们需要在CFLAGS中传递
    -fddiagnostics color=always
    。希望我能把这一点提高十几次。在Cygwin中也可以使用。我想说的是,这太棒了,很有魅力,但是由于它当前被键入,我得到了一个关于“regex中的嵌套量词”的错误,并通过在“g++”中的“+”中添加“\”进行了修复,之后效果很好。这意味着什么“只需将您的make别名到这个脚本中,并确保它是可执行的…”?我应该如何使用这个脚本?我相信他的意思是在bashrc文件中添加一个别名,例如,当您键入时,将实际运行。然后,该脚本调用实际make。搜索“设置永久别名”以获取更多信息。@MikeDannyboy说的是所有绿色消息的解决方案。使用g\+\+而不是g++,然后所有的工作都像一个符咒;)看起来很有趣,但是安装说明在ubuntu上不起作用。我尝试了“easy”pip命令,但由于缺少几个python包而失败。我可以找到一些ubuntu软件包,但不是全部(例如exitstatus)。在以root用户身份运行pip之后,它安装了一些东西,但之后我只有/usr/local/lib/python2.7/dist-packages/outproc中的东西(没有安装说明提到的任何目录),并且任何地方都没有“bin”dir,任何地方都没有“outproc”binary…@CarloWood,这是一个Python 3包。我刚刚在一个最小的Ubuntu16.04 docker容器中进行了尝试:
    apt get install-y python3-{pip,setuptools,wheel}
    pip3 install-U pip
    ,最后是
    pip install outproc
    ——所有东西都安装了w/o问题。好的,有了这些说明,我就可以得到了