【发布时间】:2012-12-06 19:32:04
【问题描述】:
根据这些答案 [1, 2, 3],我已将所有内容添加到我的 $PATH 并调整了我的 SConstruct 以设置适当的环境变量。现在当我跑步时
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。
【问题讨论】:
-
您的问题在第一个链接答案中得到了回答:“SCons 通常会在运行构建之前清理环境(这是一项功能)。”
-
@Industrial-antidepressant 我已经使用了 Greg 建议的环境变量。我可以通过 Clang 和 SCons build 就好了;我无法运行 静态分析器。
-
嗯,试试 scan-build --use-analyzer=/path/to/clang
-
@Industrial-antidepressant
--use-analyzer不是scan-build的公认选项。 -
该选项已于 2012 年 8 月 24 日星期五 23:08:08 添加到 clang,提交消息“重做 scan-build 如何选择用于静态分析的 clang 版本”,并与 clang 3.2 一起发布
标签: c++ c++11 clang scons scan-build