适用于Linux的C ++ IDE,具有智能参考搜索功能

时间:2010-03-25 09:36:34

标签: c++ linux ide

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

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

迄今为止我尝试过的最好的是Visual SlickEdit,但还有更多希望。

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

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

那么,IDE是否会如此智能?

EDIT2

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

我尝试过 Eclipse ,引用搜索似乎相对较好,但索引中等大小项目需要20分钟,而内存和崩溃耗尽4倍。我尝试增加它和其他一些建议并且它有所改善,但仍然非常缓慢且烦人的这些崩溃。

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

Edit4

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

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

所提到的IDE中没有一个可以在使用引用,虚拟函数等方面与Visual SlickEdit竞争.QT Creator是最接近的,所以我会选择它来回答我的问题。

7 个答案:

答案 0 :(得分:3)

我认为你可以使用Eclipse,主要是我认为它能够做你想要的,或者足够的。另外here'简要描述了它的搜索选项。

答案 1 :(得分:2)

不,我认为我们不会看到与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);
}

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

你有没有试过Netbeans。关闭Eclipse的竞争对手,它具有Web开发,移动应用程序ide,插件等所有功能,几乎可以做任何事情。所有这些都具有较低的CPU和内存占用。它确实正确地解析了名称。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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