Eclipse索引 - 各种选项的作用

问题描述 投票:3回答:1

当你在项目上使用right-click > index时,有几个选择:

  1. 重建
  2. 清新所有文件
  3. 使用修改的文件更新
  4. 重新解决未解决的包含问题

我每次都只是在重建,但现在我正在做一个庞大的项目并且负担不起;当我修改文件时,无论是.cpp还是.h,我都需要知道要做哪个“索引”操作。

对于每个'索引'选项:

  1. 它到底做了什么?
  2. 成本是多少(相对内存,CPU时间)?

Eclipse提供的文档很有帮助,但已经搜索过,但没有找到。

eclipse eclipse-cdt
1个回答
3
投票

重建只能在整个项目中执行。它抛弃了项目的整个索引并从头开始重建,为项目中的每个文件编制索引。

由于它是通过丢弃先前的索引开始的,因此取消重建将导致空索引或部分构建的索引。


其他操作可以在整个项目中执行,也可以在项目中的文件夹或文件(或文件夹/文件组)上执行。

它们都会遍历选择中的文件,并在索引中更新其中的部分或全部文件。与Rebuild不同,它们不是通过清除索引开始的,因此取消它们是相对安全的。

刷新所有文件更新选择中的所有文件。如果在项目中调用,则最终结果与Rebuild相当。

使用Modified Files更新仅更新选择中自上次在索引中更新后已更改的文件,这些文件由其时间戳和其内容的哈希确定。

重新解析未解决包括仅更新选择中的配置信息(例如指定的包含路径)已更改的那些文件,并且更改导致以前未解析的包含现在正在解析。


性能特征可能会有很大差异,具体取决于项目大小和运行的机器类型。我在一个非常大的项目(数百万行)上工作,在相对现代的桌面上重建可能需要20-30分钟。该操作通常是CPU绑定的,但索引器当前是单线程的,因此它只使用一个CPU核心。


最后,我想再次提一下我在关于这个问题的评论中所说的内容:如果你将索引配置为在Preferences | C/C++ | Indexer中自动更新,你根本不应该手动调用这些命令,至少在理论上是这样。在实践中,我发现偶尔需要重建(比如每隔几周一次),特别是在配置更改后(例如添加新的包含路径)。


来源:这个mailing list post,阅读行动的实施,以及使用CDT的经验。

© www.soinside.com 2019 - 2024. All rights reserved.