清理Eclipse索引,它与代码不同步

时间:2010-06-09 17:34:32

标签: c++ eclipse eclipse-cdt

我通过Linux上的链接资源使用Eclipse和C ++代码。代码分析索引似乎已损坏(Goto定义使光标接近但未定义)刷新资源无法修复它,也没有重新启动Eclipse。

有没有办法刷新索引并重建它?

9 个答案:

答案 0 :(得分:73)

右键单击您的项目,进入Index子菜单,然后选择“Rebuild”,“Update with modified files”或“Freshen all files。”

我不知道这三个选项之间的区别,但“使用修改过的文件更新”或“刷新所有文件”之一通常会为我修复它。

此外,我确信您已经完成了此操作,但请确保您运行的是最新版本的Eclipse CDT。当前版本似乎比以前的版本具有更可靠的索引。

答案 1 :(得分:32)

http://dev.eclipse.org/mhonarc/lists/cdt-dev/msg10390.html,“重建”,“使用修改过的文件更新”或“刷新所有文件”之间的区别:

  

重建:仅适用于整个项目。清除索引和索引   从头开始的文件。取消后,它会留下空或   部分指数。

     

使用修改的文件进行更新:适用于资源   选择。检查单个文件是时间戳还是时间戳   scanner-config已更改并更新已更改的索引   文件。

     

刷新所有文件:适用于资源选择。更新   索引中选定的文件。索引未清除,安全   取消操作。

答案 2 :(得分:19)

转到您的项目properties -> C++ general -> Indexer

  • 使用'project specific settings'执行此操作,
    (或'Configure Workspace Settings...')。
  • 取消选择'Enable Indexer'点击Apply
  • 选择'Enable Indexer'点击Apply

这应该完全消除并重建索引。

答案 3 :(得分:11)

上述任何一项都不适用于我(Eclipse Indigo),索引仍然破坏并且拒绝正确重建。直到应用这个:

http://slsam2.blogspot.com/2012/02/eclipse-cdt-index-not-working.html

链接帖子的关键部分是:

  

Eclipse不再将您的项目视为C ++项目。选择菜单File/New/Convert to a C/C++ project。索引源代码需要一段时间。

我仍然想知道Eclipse如何能够无法控制地在脚下射击自己。我怀疑安装额外的软件包可以触发它。在我的案例中也许是JavaScript支持。

答案 4 :(得分:3)

删除 .metadata.plugins \ org.eclipse.cdt.core下的 .pdom 文件有帮助,我在将Neon.2升级到Neon后将索引器搞砸了.3这似乎解决了这个问题。 (此评论已在上面存在但不允许在那里确认)。

答案 5 :(得分:1)

您是否尝试将-clean添加到eclipse可执行文件的命令行中?

答案 6 :(得分:0)

Eclipse不再将您的项目视为C ++项目。选择菜单文件/新建/转换为C / C ++项目。索引源代码需要一段时间。为我工作

答案 7 :(得分:0)

我开始尝试Josh Kelleys和mmmmms的答案没有任何运气,但我最终通过检查我的包含路径修复了它。

查看它们的一种方法是在Project Explorer中,展开项目,应该有一个条目“Includes”。在其中,检查每个包含路径上的小黄色警告三角形。如果出现这个三角形,日食很可能无法识别路径。

通过右键单击Project explorer中的“您的项目”来编辑包含路径,然后选择“属性” - > C / C ++一般 - >路径和符号 - >包括。

我看到三种语言选项,Assembly,Gnu C,Gnu C ++。在开始添加路径之前选择正确的路径(可能是Gnu C ++)。添加所有路径后, - >应用 - >如果您被要求,请并重建索引。

当错误的工作区路径应该是 MyProject /文件夹时,我的错误工作区路径看起来像 MyProject / MyProject /文件夹

对我来说,“问题” - 即使在重建索引之后,查看总是很慢。要确保错误仍然存​​在,请双击Problems条目,以便eclipse打开/重新加载有问题的文件。我似乎经常需要更新“问题”视图。

我真的不知道是不是eclipse或我的scm搞砸了。无论如何,希望它可以帮助别人!

我使用Luna并使用外部makefile构建。

答案 8 :(得分:0)

我发现我已将全局索引器设置为“使用项目的索引器设置中指定的构建配置”, 并且项目的索引器设置为不使用项目特定的索引器设置。 无论如何,无论我选择哪种配置,索引器都使用相同的固定配置。 解决方法: 窗口首选项,C / C ++,索引器。在“索引器的构建配置”部分中选择“使用活动的构建配置”。

快乐的日子。