Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse索引-各种选项的作用是什么_Eclipse_Eclipse Cdt - Fatal编程技术网

Eclipse索引-各种选项的作用是什么

Eclipse索引-各种选项的作用是什么,eclipse,eclipse-cdt,Eclipse,Eclipse Cdt,在项目上单击鼠标右键>索引时,有几个选项: 重建 刷新所有文件 用修改过的文件更新 重新解决未解决的问题包括 我每次都在做重建,但现在我在做一个大项目,我负担不起;当我修改一个文件时,无论是.cpp还是.h,我都需要知道要执行哪个“索引”操作 对于每个“索引”选项: 它到底做什么 成本是多少(相对内存、CPU时间) 来自Eclipse的文档可能会有所帮助,但是已经搜索过了,没有找到任何文档。重建只能在整个项目上执行。它丢弃了项目的整个索引,并从头开始重建它,为项目中的每个文件编制索引 因为它是从

在项目上单击鼠标右键>索引时,有几个选项:

  • 重建
  • 刷新所有文件
  • 用修改过的文件更新
  • 重新解决未解决的问题包括
  • 我每次都在做重建,但现在我在做一个大项目,我负担不起;当我修改一个文件时,无论是.cpp还是.h,我都需要知道要执行哪个“索引”操作

    对于每个“索引”选项:

  • 它到底做什么
  • 成本是多少(相对内存、CPU时间)

  • 来自Eclipse的文档可能会有所帮助,但是已经搜索过了,没有找到任何文档。

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

    因为它是从丢弃上一个索引开始的,所以取消重建将导致一个空的或部分构建的索引


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

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

    刷新所有文件更新所选内容中的所有文件。如果在项目中调用,最终结果与重建相当

    使用修改后的文件更新仅更新自上次在索引中更新以来已更改的选择中的文件,这取决于文件的时间戳及其内容的散列

    重新解析未解析的包含仅更新所选内容中配置信息(如指定的包含路径)已更改的文件,并且更改导致先前未解析的包含现在正在解析


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


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



    资料来源:这篇文章,阅读了操作的实现,以及使用CDT的经验。

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