如何让 Eclipse 索引包含多个“制作项目”的整个 C/C++ 源代码树?
Posted
技术标签:
【中文标题】如何让 Eclipse 索引包含多个“制作项目”的整个 C/C++ 源代码树?【英文标题】:How can I get Eclipse to index an entire C/C++ source tree that contains multiple "make projects"? 【发布时间】: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 项目中不可用。 【参考方案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)
。在那里我选择了Executable
和Linux GCC
。我现在可以浏览我的代码了。
***.com/a/9182742/4361073 + ***.com/a/7663879/4361073(在您的项目转换为 C++ 项目类型之后。【参考方案4】:
我也遇到过类似的情况。我是这样解决的:在项目View-->select Index-->rebuild.
中右键项目@
【讨论】:
只有在设置“项目类型”时才有效(否则将被禁用)。必须关注***.com/a/11459213/4361073(如上),然后才能重新索引。【参考方案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 项目 然后选择您的项目并完成。完成索引可能需要一些时间,这取决于您的项目大小。
【讨论】:
以上是关于如何让 Eclipse 索引包含多个“制作项目”的整个 C/C++ 源代码树?的主要内容,如果未能解决你的问题,请参考以下文章
如何让 Eclipse 远程调试器继续监听端口,直到 JVM 最终连接?
当我的视图包含 UNION ALL 时,如何让 Oracle 使用索引?