2013-04-30 4 views

ответ

2

Отказ от ответственности: Это не ответ на решение вашей проблемы, но это занимает слишком много места, чтобы поместить это в комментарий.

Вот короткий процесс ликвидации Холмса. Во-первых, в соответствии с Clang documentation цвет включен только тогда, когда обнаружен цветной терминал. А во-вторых, согласно Boost.Jam documentation, все переменные среды автоматически импортируются в свой встроенный модуль .ENVIRON. Наконец, у вас действительно есть цветной терминал. Но это не работает. Даже форсирование проблемы с явным аргументом командной строки Клана

./b2 install --toolset=clang --cxxflag=-fcolor-diagnostics 

не отображает цветную диагностику. Мой единственный вывод заключается в том, что каким-то образом b2 не запускает свою сборку внутри цветного терминала. При дальнейшем рыть на основе ваших комментариев, я нашел related problem on another build system:

Причина этого заключается в том, что ниндзя Комплекты подпроцесс STDOUT/STDERR к трубы (подпроцесс :: Start(), subprocess.cc), и лязг проверяет, StandardErrHasColors() (tools/clang/lib/Driver/Tools.cpp), который равен false if! isatty (2) (lib/Support/Unix/Process.inc).

Я немного огляделся, и для этого нужно вызвать fork_pty() для запуска дочернего элемента в псевдотерминале. Я не знаю, повлияет ли это на время создания подпроцесса, и если открытие ~ 4000 pseudo ttys (хром-сборка на -j10000) считается хорошей формой.

(Это можно заставить лязг всегда испускают цвет избежали кодов с использованием «-Xclang -fcolor-диагностика», но это довольно Hacky. Сделать не кажется, переопределить STDERR на UNIX, насколько я могу судить, child_execute_job() в job.c)

Заключение: вы, возможно, придется покопаться в b2 внутренностей, чтобы увидеть, если есть какой-то выход перенаправление происходит, предотвращающую цветокодирующей. В качестве альтернативы вы можете задать вопрос по адресу Boost.Build mailinglist. Надеюсь, это поможет вам немного дальше.

Обновление: есть long standing ticket на сайте Boost SVN, который имеет дело с этим.

+0

Спасибо, но я знал эту часть. $ TERM - xterm-256color. Вызов clang из командной строки отображает цвета. Я не могу напрямую использовать вопрос о SCons.Думаю, мне нужно добавить что-то в user-config.jam, но я не знаю, что. –

+0

@HumbleDebugger, если вы 'echo' свою переменную' TERM' из вашего 'user-config.jam', какой результат вы получаете? – TemplateRex

+0

ECHO говорит xterm-256color –

1

Кажется, что основная проблема была как-то решена, но есть немного больше объяснений, которые нужно сделать в отношении этого.

Если вы хотите цвета, вы можете использовать это в user-config.jam:

using clang : : : <compileflags>-fcolor-diagnostics ; 

Однако мое личное предпочтение, чтобы справиться с этим в моем Jamroot с использованием проектных требований, так что другие не должны иметь дело с этим:

project my_project : requirements 
    <toolset>clang:<cflags>-fcolor-diagnostics 
    <toolset>clang:<cxxflags>-fcolor-diagnostics 
; 
Смежные вопросы