【问题标题】:Why doesn't clang show color output under Scons?为什么scons下clang不显示颜色输出?
【发布时间】:2012-04-12 22:21:05
【问题描述】:

使用 Scons 构建时,我可以将其配置为使用 clang,如下所示:

env["CXX"] = "clang++"

但是,它似乎没有保留 clang 输出的颜色信息。如何让 scons 保持颜色?

【问题讨论】:

  • 你的意思是:你如何让 scons 保留格式输出 [...] ?
  • 这也适用于带有-fdiagnostics-color=auto的gcc

标签: c++ clang scons


【解决方案1】:

根据clang documentation,只有检测到具有颜色功能的终端时才启用颜色。 SCons 不会自动将所有环境变量传递给运行编译器的进程,您已明确传递它们。并且 TERM 不会传递给 clang。

将以下内容添加到您的 SConstruct 中,颜色应该会再次起作用:

import os
env['ENV']['TERM'] = os.environ['TERM']

【讨论】:

  • 对我来说,它甚至无法用于简单的 make(由 qmake 生成的 Makefile)。它以前可以工作,不知道会发生什么变化(TERM=xterm):/
  • 这仍然是推荐的解决方案吗?我试过了,但是我的终端和 scons 仍然不会产生颜色。对我来说,术语是“xterm-256color”。当我尝试“clang++ -fcolor-diagnostics”时,我看到了颜色。
  • 这仍然适用于 clang 3.7 和 scons 2.4.1 使用这些 TERM 设置(也适用于 TERM=screen 内的 tmux)必须是导致您的问题的其他原因。
  • 在 docker 容器中运行 scons 时不起作用。我正在使用 gcc 进行编译,并确保在容器中正确设置了环境变量 GCC_COLORS 和 TERM(通过使用 -e 选项将它们传递给 docker 命令),但是由于某些奇怪的原因,gcc 仍然认为没有t 容器内的适当终端。有什么解决办法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 2013-09-17
  • 2016-02-03
  • 1970-01-01
  • 2011-11-17
相关资源
最近更新 更多