SCons 나는 직장에서 프로젝트를 구축하기 위해 GCC의 텍스트 출력을 분석하여 모든 컴파일러 경고에 대한 요약 보고서를 작성하려고합니다. 우리의 빌드 스크립트가 꽤 길고 콘솔에 많은 텍스트 출력이 있기 때문에 각 대상.SCons : gcc 텍스트 출력 저장/리다이렉트 (경고)
저는 Google과이 사이트를 꽤 오래 검색했으며이를 수행하기 위해 SCons에 내장 된 메소드를 찾을 수 없습니다. 나는 전체 stdout과 stderr 스트림을 this example마다 하나의 파일로 리다이 렉팅하려고했지만, SCons 자체의 출력 만 캡처되고 호출하는 도구의 출력은 캡처되지 않는다.
내 생각은 SCons가 GCC로 전송할 인수를 컴파일하고 인수 문자열 끝에 리디렉션을 추가하는 위치를 찾는 것입니다. 문서를 읽은 후, 컴파일 변수 CCCOM
과 CXXCOM
에는 컴파일에 사용 된 명령 행이 포함 된 것으로 보입니다. 그러나 SConstruct에 아래 줄을 추가했을 때 SCons가 실행중인 명령 줄에는 아무 것도 변경되지 않았습니다. 작품은 전체 SCons는 명령에서 표준 오류 스트림을 리디렉션 된 한
baseEnv['CCCOM'] += " 2> gcc-c-output.txt"
baseEnv['CXXCOM'] += " 2> gcc-cxx-output.txt"
한 가지 :
scons 2> stderr.txt
나는 그러나, 이러한 문제를 방지하고, 가능하면 SCons는 내 모든 것을 포함하고 싶습니다
. 출력물이 반드시 파일로 갈 필요는 없습니다. 빌드 끝에 파일을 구문 분석하고 저장하기 위해 액세스 할 수있는 한 어디서나 저장할 수 있습니다.
나는 오랫동안 수색 한 결과 아무 것도 생각 나지 않아서 무엇을 시도해야할지 모르겠다. 나는 이처럼 뭔가를하고 싶었던 사람이 아니라는 것을 믿어야합니다.
이 당신에게 각 소스 파일에 대한 별도의 파일을 제공해야이 ... 수있는 명령이 실제로 어떤 컴파일하는 데 사용은 왜 그들은 좋은 후보자가 될 것이라고 생각했지만 SCons는 내 수정 사항을 무시하는 것 같습니다. 나는 심지어 값을 빈 문자열로 설정하려고 시도했지만, 여전히 괜찮 았습니다. 해결책을 찾고있는 동안 변수를 수정하는 방법을 언급했기 때문에 뭔가 옳지 않은 것 같습니다. GCC 실행 파일을 래핑하는 것에 대해서는 생각하지 않았습니다. 나는 더 많은 SConsy 대답을 기다리는 동안 그 옵션을 탐색 할 것입니다. – EarlCrapstone
@EarlCrapstone, 임, 컴파일 된 각 cc 파일에 대해이 두 변수의 값이 변경 될 것입니다 (덮어 쓰임). 대신 CC와 CXX를 사용해보십시오. 실제로 차이가 있습니다. 다른 컴파일러를 지정하도록 수정했고 제대로 작동합니다. – Brady
내가 뭘 잘못했는지 알았지 만, 내가 새로운 이래로 네 시간 만 더 내 자신의 질문에 대답하게하지 않을 것이다. @ 브래디 이러한 변수는 빌드 중에 실제로 변경되지 않습니다. 내 문제는 내가 공유 라이브러리 객체를 만들고 있었기 때문에 대신'SHCCCOM'과'SHCXXCOM'을 사용하고있었습니다. – EarlCrapstone