2012-08-30 74 views
11

我有一个工作区与多个项目,这都没有问题编译。然而,由于未解决的问题,一些项目在编辑器中给出了很多关于未解决符号的警告。大多数是来自工作区中的其他项目或第三方库的标题。Eclipse CDT索引器 - 如何解决未解决包括

谷歌搜索表明这是一个索引器的问题,但我还没有找到任何连贯的解释如何解决它 - 我假设我需要将这些库的路径添加到索引器的路径,但我不能看到任何选项(我正在使用Juno)。

任何人都可以请向我解释如何配置CDT的索引器?

我也得到了未解决的两个项目中的STL头包括警告。有些STL头文件已解析,但其他文件头文件却没有,而且这两个项目之间的列表看起来并不相同(发现像vector和iostream之类的东西,但不是sstream或string,另一个也没有找到iostream) 。

可能相关:这些是C++项目,但所有文件扩展名都是.c。我将GCC C编译器命令更改为'g ++'来编译它们,但我想我还需要对索引器设置进行一些处理以应对它?

回答

6

好的,所以我现在已经解决了这个问题。

  1. 未解决的包含来自工作区和第三方库中的其他项目的问题已通过添加其他项目作为参考解决。我猜编译器知道在哪里看,因为我已经将位置添加到包含列表中,但索引器没有(可能是由于eclipse只处理标头一次?)

  2. 未解决的包含来自STL通过更改我所有的.c文件实际上是C++到.cpp。只是将编译命令更改为“g ++”显然不足以告诉索引器将项目视为C++。

在1)的情况下,我需要先清除/重建被引用的项目的索引,以删除未解决的包含错误。

+1

(注意:使用Eclipse CDT的QNX Momentics风格。)我们有一个完整的“接口”类目录结构,它我们没有放置任何项目。基于这个答案,我在“界面”文件夹级别创建了一个项目,其中包括所有子文件夹的标题和源代码。将这个文件夹的项目添加为项目引用修复了未解决的包含,突然我的错误和警告都提供了链接! (我告诉这个项目停止构建第一个错误,这可以避免冗长的编译时间。) – sage

5

右键点击您的项目在工作区中,选择Properties - >C++ General - >Paths and Symbols,然后加入包含和特定的编译器的符号,加库,你需要在可用的选项卡其他的东西。之后,打到Apply - 它应该开始重新索引,并且你的问题应该消失。

+2

感谢您的回应亚历。不幸的是,这似乎并没有帮助我 - 在属性> C++常规>路径和符号下的列表似乎是在C/C++构建>设置>工具设置>包括',我有已经填充了编译项目所需的include目录的路径。然而,索引器仍然在这些目录中发出“未解析的包含”标题警告。 – jam

+0

您可以尝试以下操作:右键单击您的项目,“属性” - >“索引”并尝试其中的选项:“重建”,“使用修改的文件更新”,“更新所有文件”,“搜索未解析的包含” 。通常选项2和3解决了我的问题。 –

+1

我已经重建了我的索引,但谢谢你的建议。我相信我可能已经破解了这个 - 我注意到,在一个项目中未解决的内容实际上是以其他项目之一的名义列出的。所以,我添加了该项目作为参考,重建了索引,现在它说0未解决包含。将看看如果此修复程序适用于我的所有项目,并将其添加为答案如果是这样:) – jam

3

我有一个类似的问题,我的项目将建立,但显示未解决包括在Eclipse开普勒。

在我的情况下,我采用了现有的ARM项目并创建了一个使用不同工具链的自定义构建配置。新的构建配置包含了所有正确的内容,因此该项目的构建正确,但索引器没有选择它。

我通过将索引器设置为使用活动构建配置来修复它。在窗口 - >首选项 - > C/C++ - >索引器中,在标记为“为索引器构建配置”的部分下,我选择了“使用活动构建配置”,并将其清除。

0

所有的答案都很有帮助,但还有另一个技巧可以解决我的问题。 我发现,与编译器不同,索引器不处理包含路径的子目录。因此,您需要在包含头文件时更加具体。


#包括 “子目录\ include_2.h”