从Eclipse Indexing中排除构建中包含的文件

Hea*_*ery 5 c c++ eclipse build

该问题为从索引中排除也从构建中排除的文件提供了很好的答案。一个悬而未决的问题仍然存在:如何防止作为构建一部分的文件填充代码完成功能或代码洞察功能?

我的用例是TrueSTUDIO(以前是System Workbench,当时是Eclipse)项目,其中包括另一个项目中的一些模块。它们被包装在安全使用的存根和包装中,切勿直接调用。外部模块无法编辑,因为它们必须与另一个项目保持同步,因此它们的文件名和其他符号与当前项目的名称会发生​​冲突。当使用代码完成来包含标题或完成函数名称时,不使用的模块的文件名和函数名称将直接显示在完成列表中。

我希望继续在我的构建中包括这些模块,但是它们的任何内容都不会出现在代码完成/洞察功能中。

我在“项目属性”->“ C / C ++常规”->“索引器”中看到,有一些选项可将索引器配置为使用其他构建配置。这是有希望的,但可能很快导致索引器与主要构建配置完全不同步。

对实用方法有什么建议吗?

Jak*_*kub 2

我发现从 Eclipse 索引中排除文件的唯一方法是使用上述索引器特定的构建配置。就我而言,它帮助解决了 .cu (NVidia CUDA) 文件上索引器冻结的烦人问题。它是这样工作的:

  1. 准备新的(特定于索引器的)构建配置。
  2. 使用源位置排除过滤器从此配置中排除不需要的源文件。
  3. 让 Indexer 使用这个特定的构建配置。

使用 Indexer 进行 Eclipse 配置有点棘手,因此这是一个分步指南(对于 Eclipse 2021-09):

  1. 准备新的构建配置:

    • Project->Build Configurations->Manage->New
      • 为其命名,例如“4indexer”。
      • 根据您的首选配置选择“复制设置”。就我而言,“调试”效果很好。
  2. 排除不需要的源文件:

    • Project->Properties->Paths and Symbols->Source Location
      • 在属性窗口顶部选择“4indexer”作为要管理的配置。
      • 应用您选择的排除模式。就我而言,我通过单击“添加...”按钮并在“添加排除模式”文本字段中键入 *.cu,在“源文件夹排除模式”列表的末尾添加了“*.cu”。
  3. 重新配置索引器:

    • Window->Preferences->C/C++->Indexer
      • 允许任何索引器使用特定于项目的构建配置(弄清楚它很棘手):选中“使用项目索引器设置中指定的构建配置”单选按钮。
    • Project->Properties->C/C++ General->Indexer
      • 选中“启用项目特定设置”。
      • 为您的项目索引器选择新的构建配置:选中“使用固定构建配置”并从下面的下拉列表中选择“4indexer”。
      • 我还取消选中“索引源文件不包含在构建中”,但我不确定是否有必要。

有时,当您尝试重新配置项目时,Indexer 会尝试重新索引该项目,从而冻结 Eclipse。因此,我将其打开、关闭并重新启动 Eclipse 几次。

  • 我认为提议的模式正是您所期望的。**构建中的所有源文件都被索引,但子集**被“排除模式”排除(您可以在其中使用通配符、子文件夹等来定义合适的子集)。唯一的不便之处在于,在发生任何重大更新(例如,添加新的源文件夹)时,要使新的构建配置与原始配置保持同步。但这与保持“调试”和“发布”构建配置同步带来的不便相同。 (2认同)