2012-12-06 2 views
13

내가 추가 한 모든 내 $PATH을 사용하고 내가 [3, 1, 2]이 답변에 따라, 적절한 환경 변수를 설정하는 내 SConstruct을 쥐게했습니다. 지금은 빌드가 시작되고, 나는 scons에 의해 갈래의 프로세스가 오브젝트 파일이 성공적으로 빌드연타의 스캔 구축 SCons는와 C++ (11)

/path/to/c++-analyzer ... -std=c++11 ... 

입니다 볼 수 있지만 그때는 오류 얻을

scan-build --use-c++=`which clang++` scons 

를 실행하면

could not find clang line 

이 오류는 분기 된 프로세스에 -cc1 문자열이 포함되어 있지 않을 때 c++-analyzer에서 발생합니다. 내가 ps aux를 확인한다면, 나는 분명

/path/to/clang -cc1 ... 

어떻게 프로그램이 제대로 만들 수 볼 수 있지만 정적 분석기는 다음과 같이 실패?


참고로, 내가 수동으로

scan-build clang++ <parameters from scons> 

다음 빌드가 성공하고 보고서를 생성 실행하는 경우!

또한

env["ENV"]["PATH"] = os.environ["PATH"] 

를 추가하고 난 그냥 수정되지 않은 SConstructscons 자체에 scan-build를 실행할 수 없습니다

CXX="scan-build clang++" scons 

을 실행하여 "속임수"할 수 있습니다.

+0

질문에 대한 답변은 "SCons는 일반적으로 빌드를 실행하기 전에 환경을 정리합니다 (이것은 기능 임)." –

+0

@ Industrial-antidepressant 이미 Greg가 제시 한 환경 변수를 사용합니다. 나는 Clang과 SCons를 통해 * 잘 만들 수있다. * 정적 분석기 *를 실행할 수 없습니다. – chrisaycock

+0

흠, scan-build로 시도하십시오 --use-analyzer =/path/to/clang –

답변

4

문제는 clang이 execution environment의 검색 경로에 없다는 것입니다. 이것은 왜 라인을 추가하면 env["ENV"]["PATH"] = os.environ["PATH"]이 문제를 해결하는지 설명합니다. 당신은 실행 환경, 예를 들어,에 의해 사용되는 검색 경로에 그 소리 실행 파일 (clang++ 가능성이 clang)를 넣을 수 있습니다 수정되지 않은 SConstructscan-build를 실행하려면

Linux의 /path/to/clang++/usr/bin/clang++에서 기호 링크를 작성하십시오.