【问题标题】:Using clang++ for code analysis in an Autotools project in Eclipse在 Eclipse 的 Autotools 项目中使用 clang++ 进行代码分析
【发布时间】:2013-08-06 17:37:37
【问题描述】:

我在 Mac OS 10.8 上使用 Eclipse 4.2,并安装了命令行工具 (Xcode 4.6.3)。 clang 编译器通过使用以下标志来支持 C++11:-std=c++11 -stdlib=libc++

我在 Eclipse 中有一个由 Autotools 管理的项目。在调用configure 时覆盖CXXCXXFLAFGS 环境变量后,真正的编译按预期工作。但是Eclipse中的静态代码分析继续使用GCC(Xcode安装的版本是GCC 4.2),所以不支持C++11,而且很多行显示的错误不是真实的,做静态代码分析几乎没用。

使用自制软件我还安装了 GCC 4.7,但我没有成功让 Eclipse 使用该版本(或 clang++)来执行静态代码分析。

在使用 Autotools 管理的项目时,是否可以让 Eclipse 使用不同的编译器进行静态代码分析?我应该在哪里指定?

【问题讨论】:

  • 嗯,很有趣。我一直认为静态分析是由 Codan 完成的,例如参见 C++, Eclipse CDT code analysis? 你怎么知道在你的情况下静态分析是由 gcc 完成的? (我使用的是 Linux。)
  • @Ali 我不完全确定实际检查是如何完成的,但我想在这种情况下,Codan 仍然需要查找包含标头。这些不应该是 GCC 4.2 (Xcode 4.6.3) 中包含的那些,而是 Clang 的那些或 GCC 4.7 中包含的那些(通过自制软件)。
  • 是的,这是有道理的。如果有任何安慰的话,静态分析仍然不能很好地与 C++11(或 C++98 相关,尽管我报告了我的错误报告)。这是我在 Eclipse 中设置的第一件事,我关闭了静态分析... :(
  • @Ali 我设法解决了这个问题 :)
  • 感谢您让我知道这件事。我不明白为什么这对你有帮助,但我很高兴它确实如此。我的台词已经看起来像你写的那样,但是静态分析失败了。 :(

标签: eclipse macos c++11 clang autotools


【解决方案1】:

安装 Xcode 5 后,按照this question 中的说明,我设法解决了问题(我无法再测试这是否也适用于 Xcode 4.6)。

解决办法是去Project properties->C/C++ General->Preprocessor Include Paths, Macros etc.->Providers->CDT GCC Built-in Compiler Settings,在Command to get compiler specs:追加-std=c++11 -stdlib=libc++

进行更改后,该行应如下所示:

${COMMAND} -E -P -v -dD ${INPUTS} -std=c++11 -stdlib=libc++

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 2016-12-05
    相关资源
    最近更新 更多