我怎样才能使 Clang 的“扫描构建”与 SCons 一起工作?

发布于 2025-01-06 01:39:43 字数 275 浏览 0 评论 0原文

我有一个使用 SCons 构建的项目,我正在尝试使用 Clang 静态分析器 来分析代码。然而,运行

scan-build scons

SCons 时似乎会忽略 scan-build 引入的设置。我怎样才能做到这一点?

I've got a project built with SCons and I'm trying to use the Clang Static Analyzer to analyze the code. However, when running

scan-build scons

SCons seems to ignore the settings introduced by scan-build. How can I make this work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

余罪 2025-01-13 01:39:43

scan-build 的工作方式是设置构建系统(例如 make)通常使用的各种环境变量来控制构建的发生方式。其中一些是:

  • CC - 用作 C 编译器的程序名称
  • CXX - 用作 C++ 编译器的程序名称
  • CCC_* - 各种控制 Clang 静态分析器行为的环境变量

SCons 通常会在运行构建之前清理环境(这是一个功能)。为了使上述环境变量生效,请在SConstruct中执行以下操作:

env = Environment()
env["CC"] = os.getenv("CC") or env["CC"]
env["CXX"] = os.getenv("CXX") or env["CXX"]
env["ENV"].update(x for x in os.environ.items() if x[0].startswith("CCC_"))

The way scan-build works is it sets up various environment variables that are usually used by build systems (such as make) to control how the build happens. Some of these are:

  • CC - name of program to use as C compiler
  • CXX - name of program to use as C++ compiler
  • CCC_* - various environment variables that control the behaviour of Clang's static analyzer

SCons normally cleans out the environment before running a build (this is a feature). In order to make the above environment variables take effect, do something like this in SConstruct:

env = Environment()
env["CC"] = os.getenv("CC") or env["CC"]
env["CXX"] = os.getenv("CXX") or env["CXX"]
env["ENV"].update(x for x in os.environ.items() if x[0].startswith("CCC_"))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文