【问题标题】:gccsense vs. clang_completegccsense 与 clang_complete
【发布时间】:2011-03-28 04:46:05
【问题描述】:

我一直在使用omniCppComplete + ctags,想在代码补全上做进一步的改进。

根据此处 [1] 的建议,gccsense 和 clang_complete 似乎是替代品。但是,我不确定哪个更好。对他们的表现有任何想法吗?
谢谢!

更新:我试过clang_complete后,发现完成速度极不可接受。 然后我使用 libclang.dylib 进行了尝试,它加快了很多速度,但仍然让人感觉滞后。 我想我现在应该坚持使用 ctags。

【问题讨论】:

    标签: vim clang code-completion clang-complete


    【解决方案1】:

    您可能应该使用 clang_complete,而不是 gccsense。

    这里的重点是两者的架构。这两种解决方案背后的想法非常相似:如果不访问内部编译器 (gcc) 信息(抽象语法树),您将无法获得正常的 C++ 完成,而 gcc 没有为此提供足够的接口。虽然访问此信息的实现部分在这里完全不同:gccsense 是一种“hack” - 它是 gcc 的自定义构建,能够存储必要的信息以进一步将其提供给插件,而 clang_complete 则通过使用另一种方式编译器:clang,创建它的主要目标之一就是使外部工具可以轻松访问 AST。

    因此,在使用 gccsense 的情况下,您需要使用一种自定义 gcc 编译器来编译您的代码,该编译器现在已经有点过时了(gccsense 正在使用 gcc 4.4),并且将不断需要开发人员的功能支持。相反,clang_complete 并不太依赖 clang 编译器,它使用它作为外部工具。

    至于性能:再一次,clang 被设计为比 gcc 更快,而且确实如此。 Clang_complete 在 Windows 上可能比在 MacOS/Linux 上稍慢,但是 gccsense 当时甚至无法为 Windows 编译。

    【讨论】:

    • 这很合理。我要试试 clang_complete。感谢您的建议!
    • 好吧,我不这么认为。我刚刚尝试了 gccsense,它在处理您的代码之前无需编译任何内容即可完成。容易安装,也容易使用。使用 CEDET,它无法找到 boost::mutex 中的函数,但 gccsense 可以看到它。但是,缺点是 gccsense 无法在“.”上完成。或“>”,所以我会把这个问题留给 CEDET,当 CEDET 无法完成它的工作时,我使用 gccsense(当然是键绑定)。
    【解决方案2】:

    GCCsense 可以在 Windows 上构建。 在此处查看我在 gcc 4.5.2 上的补丁: http://forums.codeblocks.org/index.php/topic,13812.msg94824.html#msg94824

    我承认 gccsense 只是 gcc 的一个 hack,但 clang 从一开始就有更好的设计。

    我希望任何人都可以改进 gcc/gccsense。

    【讨论】:

      猜你喜欢
      • 2012-11-09
      • 2013-01-12
      • 2013-02-06
      • 2012-05-02
      • 2014-10-02
      • 2012-10-10
      • 2013-05-26
      • 1970-01-01
      • 2012-11-26
      相关资源
      最近更新 更多