【问题标题】:C++ IDE for Linux with smart reference searching适用于 Linux 的 C++ IDE,具有智能参考搜索功能
【发布时间】:2010-03-25 09:36:34
【问题描述】:

是否有支持 C++ 的 IDE 并能真正智能地搜索引用? “引用”是指在整个项目或工作区中使用类(或其成员)、变量、函数。

有很多 IDE 提供它。其中一些似乎只是搜索具有大量内容的同名文本,另一些则更聪明并检查上下文(如类边界、命名空间)但不够准确。

到目前为止,我尝试过的最好的方法是 Visual SlickEdit,但还有更多值得期待的地方。

class C1
{
    int foo;
};
class C2
{
    int foo;
};

例如,在这种情况下,当搜索 C1::foo 引用时,我不想也显示 C2::foo

那么,有没有这么聪明的 IDE?

编辑2

到目前为止,每个人的答案都是 10 倍。

我尝试了Eclipse,参考搜索似乎比较好,但是索引中等大小的项目需要20分钟,4次5的内存耗尽并崩溃。我尝试增加它和其他一些建议,它变得更好了一些,但仍然很慢并且对这些崩溃感到恼火。

我尝试了 KDevelop3,但这个问题中提到的功能不是很高级 - 似乎只是非常高级的基于 grep 的文本搜索。

编辑4

KDevelop4 - 我试图让它工作,但最新的测试版它对于自定义 makefile 项目完全不可用,我无法用它做任何事情。

编辑5
我很惊讶,但 QT Creator 在我的测试中表现得非常好。它似乎没有创建一些标签/索引文件,但以某种方式设法非常精确地显示了变量/函数/类的用法。不幸的是,在遵循函数定义时,它似乎不能很好地与模板一起工作。

在处理引用、虚拟函数等方面,上述 IDE 都无法与 Visual SlickEdit 竞争。不过,QT Creator 是最接近的,所以我会选择它作为我问题的答案。

【问题讨论】:

  • 我使用 SlickEdit (14.0.1.2),这似乎对我有用。如果我确实想要对 foo 的所有引用,我必须在项目文件中执行“在文件中查找”。对于虚函数,它会询问您是要对所有类的引用还是仅从您选择的类中引用。
  • @stefaanv 我在某些项目上使用右键菜单中的 GoToRefference。 “在文件中查找”不只是具有不同选项的文本搜索吗?我在那里没有看到任何内容选项。
  • 是的,“转到参考”仅显示对 C1::foo 的引用。 “在文件中查找”搜索文本,因为我看不到其他显示引用的方式,因为就 SlickEdit 而言,C1::foo 和 C2::foo 之间的唯一相似之处是文本。
  • 好的,我需要的是不要混合 C1::foo 和 C2::foo,SlickEdit 通常会这样做,但并非总是如此。

标签: c++ linux ide


【解决方案1】:

我认为你可以使用 Eclipse ,主要是我认为它能够做你想做的事,或者几乎足够了。还有here's 对其搜索选项的简要说明。

【讨论】:

  • 10x,我正在尝试。如果我赢得了 OutOfMemory 战斗,它可能会胜任。
【解决方案2】:

我认为 Qt-Creator 可以帮助您。新预览版 2.0 中添加了一些新功能。

【讨论】:

  • 2.0 是 alpha,我正在寻找更稳定的东西,但 1.3.1 的表现出奇的好! 10x
  • 我建议您在官方论坛讨论您的需求或将其发布在 issue Q(qt.gitorious.org/qt-creator)中,以便将其包含在 2.0 最终版本中。
【解决方案3】:

不,我认为我们永远不会看到与 C# 或 Java 编辑器中的实现一样好的实现,原因有两个:

1) 预处理器:

#ifdef _DEBUG
#define FOO(x) C1(x).foo
#else
#define FOO(x) C2(x).foo
#endif

2) 模板:

template<class C> void Method(C const& c) {
    printf("%d", c.foo);
}

在这两种情况下,都很难确定实际引用了哪个类。

【讨论】:

  • 我想我们最终会看到它。随着像 gccxml 这样的工具和像持续编译这样的概念变得越来越主流,编辑器作者将更容易集成“适当的”上下文正确搜索。话虽如此,我不认为任何这样的编辑器/进程在 linux 上做“正确”的事情。
  • 我想我在 Visual Studio 开发者博客上读到了他们的实现以及为什么如此困难。如果我没记错的话,他们已经使用编译器来填充他们的符号索引,但这还不够,因为解析必须非常容错。大多数情况下,在编辑过程中,您的代码不是格式良好的 C++。这适用于所有语言。
【解决方案4】:

您是否尝试过 Netbeans。 Eclipse 的主要竞争对手,它拥有所有功能,如 Web 开发、移动应用程序 IDE、插件,几乎可以做任何事情。所有这些都具有较低的 CPU 和内存占用。它确实正确解析了名称。

【讨论】:

  • 我试过一次但不喜欢它,但现在它似乎更好了。它确实正确显示了用法。 10q,我试试看。
  • 我觉得如果 Netbeans 本身,第一眼人们通常会排斥 Swing 主题。如果你换成你的原生主题,那会更好看。
【解决方案5】:

我自己没有使用过KDevelop,但我觉得它对源代码进行了一些认真的解析,并且能够通过编辑器访问源代码信息。它至少有一些高级的code assistant functionality

【讨论】:

  • 是的,我明白了。由于我不会使用 C++ 编程,并且自己也没有使用过 KDevelop,所以我害怕过度销售它。通过阅读有关等的博客文章,我对该工具的印象是它非常好并且高于平均水平。但我不知道。因此有一个“检查一下”的答案。
【解决方案6】:

您必须尝试 KDevelop 4,而不是旧版本。

【讨论】:

    【解决方案7】:

    您可以查看 CodeBlocks [http://www.codeblocks.org/]。我刚开始使用它,但没有针对您的要求进行测试。所以我现在不要求 10X。但是你可以试一试。它的开源和好的一个。

    【讨论】:

    • 是的,我之前尝试过,但它似乎只是在查找某些项目的出现时进行文本搜索,我正在寻找具有更深入代码理解的东西。除了这个,它看起来真的很好。
    猜你喜欢
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 2010-09-20
    • 2016-01-20
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多