如何调整Eclipse的C ++ Indexer?
时间:2020-03-05 18:52:05 来源:igfitidea点击:
我正在使用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可访问的选项?
谢谢,
卡尔
解决方案
回答
我想像其中之一:
- Eclipse不想在树中显示非C ++资源(我对此有疑问)
- 我们没有启用"首选项> C / C ++>索引器>为所有文件编制索引"。
- 我们要使用" Full C / C ++ Indexer"而不是" Fast C / C ++ Indexer"
回答
CDT解析器/索引器不会识别出这种奇怪的扩展名。我们唯一可以做的就是在"路径和符号"属性页上定义宏来欺骗解析器。尝试为$ hdr,$ end和$ src创建具有空主体的宏。这样,预处理器将删除它们,而解析器将不会阻塞它们。