Eclipse CDT索引不起作用,无法在项目中查找声明

7
我已经在新安装的Ubuntu上安装了Eclipse和CDT插件。索引设置为“快速索引”,这是推荐的设置(“完全索引”似乎没有太大区别)。
在很多地方,如果我按下“F3”(“显示声明”)键,光标停留在原地,不会跳转到声明处,但是对于标准文件和符号(如stdio.h、std::vector等),它可以正常工作。
例如,我有两个文件,
/home/myself/Workspace/Project/X/Y/include/file.h
/home/myself/Workspace/Project/X/src/file.cpp

我无法看到任何在file.h中定义的class或变量在file.cpp中的声明。即使按下'F3'键也无法进入file.h文件。我的Eclipse工作区创建在Workspace文件夹中,C++项目创建在Project文件夹中。为了存储包含路径,我在Eclipse中按照以下步骤操作:

项目 -> 属性 -> C/C++ 通用 -> 路径和符号 -> 库和路径 -> 添加 "/Project/X/Y/include/file.h"(同时使用“工作区”和“文件系统”选项卡)

但是仍然没有成功。我已经在互联网和SO上进行了足够的搜索,但没有找到有用的信息。请注意,我现在只是使用Eclipse进行代码浏览,而不是构建代码。

1个回答

15

好的,搞定了。实际上,我在路径和符号中包含的任何包含路径都是多余的,它们没有任何影响,因为工作区/项目下的所有内容都会被索引。

解决方案非常奇怪,与可伸缩性有关,我从这个链接中得知。在Eclipse中转到:

  

窗口->首选项->C/C++->编辑器->可伸缩性->“启用可伸缩性模式时…”

设置一个大数字,例如500000,然后点击“确定”。问题解决了!对于我的情况,实际设置值为5000,我看到的源文件有16k+行。


1
当你有一个如此庞大的C++文件时,这是一个不好的迹象。尝试进行一些重构来帮助你的理智。 - Captain Lepton
3
这句话的意思是,如果你看到编程代码中有很多类似于__declspec(dllexport)之类的代码片段,这并不一定意味着代码质量不好。这可能只是因为你正在使用SWIG封装器(或其他自动生成的代码)、硬件设备驱动程序头文件、sqlite.h等等。总之,这并不是一个坏迹象。 - user948581
我已经使用包括SWIG和各种自制系统在内的自动生成的文件工作了很多年,并在我的上一份工作中编写了设备驱动程序。这些文件都不必创建不能分解为更可管理的逻辑单元的单块文件。 - Captain Lepton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接