【问题标题】:How can I get Eclipse to index an entire C/C++ source tree that contains multiple "make projects"?如何让 Eclipse 索引包含多个“制作项目”的整个 C/C++ 源代码树?
【发布时间】:2011-11-08 13:02:46
【问题描述】:

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

我有一个名为 src 的目录。在其中,我有一堆目录,如下所示:

源代码 -include(通用标题) -lib -libIO(这个库的源代码) -libGUI(这个库的源代码) -pgms -pgm1(此 pgm 的源代码和标头) -pgm2(此 pgm 的源代码和标头)

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

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

这是我的症状;我要解决的问题:

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

但是,当我按 F3 进入函数声明时,Eclipse 显示“在索引中找不到符号 'X'”。我似乎无法让 Eclipse 在我的光标下找到方法的标头声明或源定义(就像 Java 模块一样完美)。这可能吗?

【问题讨论】:

  • 我知道这不是一个答案,但你可能想谷歌“Recursive Make Considered Harmful”。 :-)
  • 如果我有权重构整个源代码树,我可能会,但有时当你为别人工作时,这不是一个选择。另外,我不认为这是Eclipse的无理要求! :)
  • 您是否将每个包含标题的目录添加到项目的“包含标题”设置中?您还应该仔细检查索引器和项目设置,以确保您没有忽略任何内容。然后尝试重建索引(右键单击、索引、重建)。
  • 我无法将目录添加到“包含标题”设置中的标题,因为这不是 C 或 C++ 项目。事实上,源代码树包括 Java 和 C 代码。我有一个单独的 Java 项目,它指向包含 Java 代码的单个子目录,但我希望我不必设置一个单独的 C 项目,指向其中包含 C 代码的 50 个子目录中的每一个所以索引器可以工作。最后,Indexer 选项显然在非 C 项目中不可用。

标签: eclipse eclipse-cdt


【解决方案1】:

请尝试以下方法(我的项目设置不同,所以我不确定这是否适合您)。

转到属性 -> C/C++ 常规 -> 路径和符号 -> 源位置。

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

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

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

【讨论】:

  • 该选项仅在 C 项目中可用,并且此源代码树包含 C 和 Java 代码。
【解决方案2】:

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

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

感谢大家的帮助。

【讨论】:

  • 索引不同于语法高亮。语法高亮很简单,因为它只依赖于关键字。索引需要知道如何编译/执行源代码才能正常工作。
【解决方案3】:

我遇到了与 OP 完全相同的问题,但由于某种原因,我使用的 Eclipse 中的菜单(Helios Service Release 2)不是“转到属性 -> C/C++ 常规 -> 路径和符号 -> 源位置。” .

我解决问题的方法是:

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

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

【讨论】:

  • 这对我有用,但请注意,该选项从该窗口移动到项目本身的上下文菜单,至少在 Eclipse Kepler 中是这样。所以我做了(在 C/C++ 视图中)右键单击项目,选择 New -> Convert to C/C++ Project (Adds C/C++ Nature)。在那里我选择了ExecutableLinux GCC。我现在可以浏览我的代码了。
  • stackoverflow.com/a/9182742/4361073 + stackoverflow.com/a/7663879/4361073(在您的项目转换为 C++ 项目类型之后。
【解决方案4】:

我也遇到过类似的情况。我是这样解决的:在项目View-->select Index-->rebuild.中右键项目@

【讨论】:

【解决方案5】:

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

【讨论】:

  • 搜索 2 小时后,这对我有用。非常感谢:)
【解决方案6】:

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

【讨论】:

    【解决方案7】:

    在 Coocox IDE (Eclipse + gcc) 中,通过文件菜单解决问题 Edit > Preferences > C/C++ / Indexer > Build configuration for Indexer 设置为 Active build configuration 并重建项目 (Ctrl R)。

    【讨论】:

      【解决方案8】:

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

      【讨论】:

        【解决方案9】:

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

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

        然后,您可以为项目选择所需的选项。 对于特定的构建,我们可以选择“使用活动构建配置”,以便只考虑构建脚本使用的文件和宏。 或者索引整个项目中的所有源文件。

        【讨论】:

          【解决方案10】:

          我正在使用

          面向 C/C++ Linux 开发人员的 Eclipse IDE

          版本:Helios Service Release 2 内部版本号:20110218-0911

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

          【讨论】:

            【解决方案11】:

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

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

            【讨论】:

              【解决方案12】:

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

              【讨论】:

                【解决方案13】:

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

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

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

                【讨论】:

                  猜你喜欢
                  • 2013-04-23
                  • 2013-07-21
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-03-02
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多