2013-04-30 2 views

답변

2

면책 조항 : 이것은 문제를 해결하는 답변이 아니지만 설명에 넣기에는 너무 많은 공간이 필요합니다.

다음은 간단한 홈즈 제거 프로세스입니다. 첫째, Clang documentation에 따르면 색상 가능 터미널이 감지 될 때만 색상이 활성화됩니다. 둘째, Boost.Jam documentation에 따르면 모든 환경 변수가 내장 된 .ENVIRON 모듈로 자동으로 가져옵니다. 마지막으로, 실제로 컬러 가능 터미널을 가지고 있습니다. 그러나 그것은 효과가 없습니다. 명시적인 Clang 명령 줄 인수로도 문제가 발생합니다.

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

은 컬러 진단을 표시하지 않습니다. 내 유일한 결론은 어떻게 든 b2은 컬러 코딩 된 터미널 내부에서 빌드를 시작하지 않는다는 것입니다. 더 귀하의 의견에 따라 파고 후, 나는 발견 related problem on another build system :

는 그 이유가 닌자 세트 서브 프로세스의 표준 출력/표준 에러 파이프 (하위 프로세스 : 시작(), subprocess.cc), 그리고 그 소리입니다 ! isatty (2) (lib/Support/Unix/Process.inc)의 경우 표준 전자 부품 실란트() (tools/clang/

조금 돌아 보았습니다.이 작업을 수행하는 방법은 의사 터미널에서 자식을 실행하기 위해 fork_pty()를 호출하는 것으로 보입니다. 이 이 서브 프로세스 생성 시간에 영향을 미치는지, 그리고 ~ 4000 의사를 여는 경우 ttys (-j10000에서 크롬 빌드)는 좋은 형태로 간주됩니다.

는 (그것은 항상 색상이 "-Xclang -fcolor 진단"을 사용하여 코드를 탈출 방출하는 그 소리를 강제하는 것이 가능하지만 꽤 해키. 수 있도록, 지금까지 내가 말할 수있는 유닉스에 표준 에러를 무시하는 것 같지 않습니다 job.c에서 child_execute_job())

결론 : 컬러 코딩 방지 일어나고 일부 출력 리디렉션이 있는지 확인하기 위해 b2 내부로 파고해야 할 수도 있습니다. 또는 Boost.Build mailinglist에서 질문 할 수 있습니다. 바라기를 이것은 조금 더 나아가 도움이되기를 바랍니다.

업데이트 :이 문제를 처리하는 Boost SVN 사이트에는 long standing ticket이 있습니다.

+0

감사합니다.하지만이 부분을 알고있었습니다. $ TERM은 xterm-256color입니다. 명령 줄에서 clang을 호출하면 색상이 표시됩니다. SCons 질문을 직접 사용할 수 없습니다.나는 user-config.jam에 뭔가를 추가해야한다고 생각하지만, 나는 무엇을 모르고있다. –

+0

@HumbleDebugger'TERM' 변수를'user-config.jam' 내부에서'echo '하면, 출력은 어떻게됩니까? – 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 
; 
관련 문제