2012-12-06 31 views
13

我已經添加了一切,我$PATH和我調整SConstruct設置適當的環境變量,按照這些答案[123。現在,當我運行使用鏘的掃描建立與scons的和C++ 11

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

的構建開始,我可以看到scons分叉過程

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

目標文件成功生成,但後來我得到一個錯誤:

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"] 

,然後運行

CXX="scan-build clang++" scons 

我只是不能scons本身運行scan-build與未修改SConstruct

+0

您的問題在第一個鏈接的答案中得到了回答:「SCons通常在運行構建之前清除環境(這是一項功能)。」 –

+0

@工業抗抑鬱藥我已經使用Greg建議的環境變量。我可以*通過Clang和SCons構建*很好;我無法運行* static analyzer *。 – chrisaycock

+0

嗯,嘗試使用scan-build --use-analyzer =/path/to/clang –

回答

4

問題是鐺不在execution environment的搜索路徑中。這解釋了爲什麼添加行env["ENV"]["PATH"] = os.environ["PATH"]可解決問題。

要在未修改SConstruct運行scan-build你可以把鐺可執行文件(clang++和可能clang)由執行環境,例如使用的搜索路徑通過在Linux上創建從/usr/bin/clang++到您的/path/to/clang++的符號鏈接。