如何让Eclipse索引包含多个“make projects”的整个C / C ++源代码树?

时间:2011-09-01 16:08:26

标签: eclipse eclipse-cdt

我无法让Eclipse为我的源代码编制索引。我目前正在Windows XP上使用Eclipse Helios。

我有一个名为src的目录。在其中,我有一堆dirs,像这样:

 src
   -include (common headers)
   -lib
     -libIO (source code for this library)
     -libGUI  (source code for this library)
   -pgms
     -pgm1  (source code and headers for this pgm)
     -pgm2  (source code and headers for this pgm)

每个叶子都有自己的Makefile。 src中没有顶级Makefile。 pgm1可以并且确实包含来自include和lib / libIO以及lib / libGUI的文件。

基本上,我希望Eclipse能够为我的整个src目录编制索引,而不必为树中的每个叶子设置一个C / C ++项目。我似乎无法找到一种方法来制作这发生了。

这是我的症状;我正在努力解决的问题:

在pgm1目录中编辑源代码时,它引用在我的include dir头文件中声明的函数,并在lib / libIO中找到的源文件中定义。

然而,当我按F3来获取函数的声明时,Eclipse说“在索引中找不到符号'X'”。我似乎无法让Eclipse在我的光标下找到方法的头部声明或源定义(就像Java模块完美无缺)。这可能吗?

13 个答案:

答案 0 :(得分:27)

我和OP有完全相同的问题,但由于某些原因,我使用的Eclipse中的菜单(Helios Service Release 2)不是“转到属性 - > C / C ++一般 - >路径和符号 - >来源地点。”。

我解决问题的方法是:

  • 在C / C ++视图中,右键单击顶部项目名称;
  • 在菜单中选择
  • ,选择New-> C ++ Project;
  • 在出现的窗口中,选择转换为然后选择C ++项目;
  • 单击“确定”关闭窗口。

Eclipse将立即开始编制索引。根据源树的大小,它可能需要一段时间,但您将在此之后最终使索引工作。

答案 1 :(得分:10)

我遇到了类似的情况。我以这种方式解决了这个问题:右键单击项目View-->select Index-->rebuild.

中的项目

答案 2 :(得分:5)

由于这里的评论,我设法解决了这个问题....我最终重新创建了我的项目。我使用Import方法从CVS下载项目,并告诉它使用New Project向导来执行此操作。当我得到New Project对话框时,我告诉它这是一个C ++项目,索引现在工作正常。

我仍然希望我可以索引文件而不必将特定的项目类型附加到它,但至少我找到了答案。

感谢所有人的帮助。

答案 3 :(得分:4)

退出Eclipse。在工作区中转到“.metadata / .plugins / org.eclipse.cdt.core”并删除其中的所有内容。

答案 4 :(得分:3)

在项目资源管理器面板中,右键单击要重新编制索引的项目,然后选择索引,然后选择所需的操作

答案 5 :(得分:2)

当我们拥有庞大的项目,大量文件以及更重要的许多不同构建选项时,不同标志下的文件和变量的索引总是很复杂。我更喜欢使用Indexer选项来帮助我浏览整个代码。 你可以找到它:Project Properties> C / C ++ General / Indexer。

您可以选择"启用项目特定设置"

然后由您决定为项目选择所需的选项。 对于特定的构建,我们可以选择"使用主动构建配置"这样只考虑构建脚本使用的文件和MACROS。 或者索引整个项目中的所有源文件。

答案 6 :(得分:2)

我正在使用Eclipse Neon 3,这是适用于我的解决方案:

  • 转到文件
  • 转换为C / C ++ Autotools项目 然后选择你的项目并完成。

完成索引可能需要一些时间,这取决于您的项目规模。

答案 7 :(得分:1)

当我在类声明中有一个未解析的友元声明时,我遇到了Eclipse Luna索引器的问题 - 似乎索引器跳过索引该类的其余部分,并且所有对它的引用都显示为未解析索引器。

解决方案:删除了未解决的朋友声明(在我的情况下,它是不再需要的遗留代码)。

答案 8 :(得分:0)

请尝试以下方法(我的项目设置不同,所以我不确定这对您有用)。

转到属性 - > C / C ++一般 - >路径和符号 - >来源地点。

你在那里看到你的源文件夹吗?

我观察到这种行为: 当我添加源文件夹然后从构建中排除它时,它将从上面的列表中消失。之后,该文件夹不再编入索引。将其重新添加到“源位置”可以解决问题:文件夹现已编入索引;仍被排除在建造之外(按预期);在源位置中可见。

我认为这是一个错误 - 从构建中排除源文件夹不应该从源位置列表中删除它。

答案 9 :(得分:0)

在Coocox IDE(Eclipse + gcc)中,通过从文件菜单中解决问题 编辑>偏好> C / C ++ / Indexer>构建索引器的配置设置为活动构建配置并重建项目(Ctrl R)。

答案 10 :(得分:0)

如果项目已经转换为C / C ++并且索引仍然无法正常工作,您可以右键单击项目和索引并重建。该项目将立即开始索引。

答案 11 :(得分:0)

我正在使用

用于C / C ++ Linux开发人员的Eclipse IDE

版本:Helios Service Release 2 建造ID:20110218-0911

我遵循了上面的建议,此外我必须使用项目属性标记所有引用的项目(在工作空间中) - >项目参考

答案 12 :(得分:0)

以下在Eclipse Neon中对我有用: 新项目 - > C / C ++ - >使用现有代码的Makefile项目 - >下一个。然后导航到代码并完成项目创建。索引会自动开始。