【问题标题】:Eclipse indexing - what do the various options doEclipse 索引 - 各种选项有什么作用
【发布时间】:2018-01-02 11:06:47
【问题描述】:

当您在项目中right-click > index 时,有几个选项:

  1. 重建
  2. 刷新所有文件
  3. 使用修改后的文件进行更新
  4. 重新解决未解决的包含

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

对于每个“索引”选项:

  1. 究竟做什么?
  2. 成本是多少(相对内存、CPU 时间)?

来自 Eclipse 的文档会有所帮助,但已经搜索过但没有找到。

【问题讨论】:

  • 我将在 CDT 代码库中进行一些研究,并在有机会时回答您的实际问题,但现在我想指出调用这些命令中的 any在正常编写代码的过程中应该没有必要。在第一次签出项目后构建索引后,自动索引更新功能(在Preferences | C/C++ | Indexer 中通过选中“自动更新索引”和“每次文件保存后立即更新索引”激活)应该足以保持索引迄今为止。
  • @HighCommander4 它应该会自动更新,但我发现有时需要手动重新索引。

标签: eclipse eclipse-cdt


【解决方案1】:

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

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


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

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

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

使用修改后的文件更新仅更新所选文件中自上次在索引中更新后发生更改的文件,具体取决于它们的时间戳和内容的哈希值。

Re-Resolve Unresolved Includes仅更新选择中配置信息(例如指定的包含路径)已更改的那些文件,并且该更改导致以前未解决的包含现在正在解决.


性能特征可能会因项目规模和您运行的机器类型而有很大差异。我从事一个非常大的项目(数百万行),在相对现代的桌面上,重建可能需要 20-30 分钟。该操作通常受 CPU 限制,但索引器目前是单线程的,因此它只会使用一个 CPU 内核。


最后,我想再次提一下我在对问题的评论中所说的话:如果您将索引配置为在Preferences | C/C++ | Indexer 中自动更新,则根本不需要手动调用这些命令,在理论上最少。在实践中,我发现偶尔重建是必要的(比如每隔几周一次),尤其是在配置更改之后(例如添加新的包含路径)。


来源:mailing list post,阅读动作的实现,以及使用 CDT 的经验。

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 2010-09-23
    • 2012-04-28
    • 2011-05-06
    • 2011-09-07
    • 2019-10-05
    • 2012-08-04
    • 2013-08-29
    相关资源
    最近更新 更多