如何调整Eclipse的C ++ Indexer?

时间:2008-09-12 09:28:55

标签: c++ eclipse eclipse-cdt indexer lazy-c++

我正在使用Eclipse作为C ++项目的IDE,我很乐意告诉我给定符号的定义以及函数的参数是什么。

然而,有一个问题:我还使用Lazy C++,这是一个获取单个源文件并生成.h和.cpp文件的工具。那些.lzz文件看起来像标题,但是这个工具支持一些非常温和的语法优点,比如将嵌套的命名空间组合成一个限定名。此外,它还有一些特殊的标签,可以告诉工具具体放在哪里(在标题或源文件中)。

所以我的典型SourceFile.lzz看起来像这样:

$hdr
#include <iosfwd>
#include "ProjectA/BaseClass.h"
$end

$src
#include <iostream>
#include "ProjectB/OtherClass.h"
$end

// Forward declarations
namespace BigScope::ProjectB
{
  class OtherClass;
}

namespace BigScope::ProjectA
{
  class MyClass : public ProjectA::BaseClass
  {
    void SomeMethod(const ProjectB::OtherClass& Foo) { }
  }
}

如你所见,它仍然是可识别的C ++,但还有一些附加功能。

出于某种原因,CDT的索引器似乎不想索引任何内容,我不知道出了什么问题。在索引器视图中,它向我显示了一个空树,但告诉我它有大约15000个符号和更多东西,我似乎无法访问它们。

所以这是我的问题:如何让Indexer输出更多关于它正在做什么以及为什么它在这样做时失败的信息,并且我可以调整它而不仅仅是GUI-无障碍选择?

谢谢,

卡尔

2 个答案:

答案 0 :(得分:2)

我想象一下:

  • Eclipse不希望在树中显示非C ++资源(我遇到了这个问题)

  • 您没有启用“偏好设置&gt; C / C ++&gt;索引器&gt;索引所有文件”。

  • 您想使用“完整的C / C ++索引器”而不是“快速C / C ++索引器”

答案 1 :(得分:1)

CDT解析器/索引器不会识别那样奇怪的扩展。您唯一能做的就是在Paths and Symbols属性页面上定义宏来欺骗解析器。尝试为具有空主体的$hdr$end$src创建宏。这样预处理器就会删除它们,而解析器也不会阻塞它们。