问题 Eclipse CDT索引器 - 如何解决未解决的问题


我有一个包含多个项目的工作区,所有这些项目都没有问题。但是,由于未解决的包含,一些项目在编辑器中提供了许多关于未解析符号的警告。大多数是来自工作区中的其他项目或第三方库的标头。

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

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

我也没有得到解决,包括两个项目中的STL标题警告。一些STL头被解析但其他的不是,并且两个项目之间的列表似乎不一样(一个找到像vector和iostream这样的东西,但不是sstream或string,另一个找不到iostream) 。

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


7822
2017-08-30 09:45


起源



答案:


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

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

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

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


6
2017-08-31 09:41



(注意:使用Eclipse CDT的QNX Momentics风格。)我们有一个完整的'interface'类目录结构,我们没有放在任何项目中。根据这个答案,我在'interface'文件夹级别创建了一个项目,其中包括所有子文件夹的标题和来源。添加此文件夹的项目作为项目参考修复了未解决的包含AND突然我的错误和警告都提供链接! (我告诉这个项目停止构建第一个错误,这可以避免冗长的编译时间。) - sage


答案:


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

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

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

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


6
2017-08-31 09:41



(注意:使用Eclipse CDT的QNX Momentics风格。)我们有一个完整的'interface'类目录结构,我们没有放在任何项目中。根据这个答案,我在'interface'文件夹级别创建了一个项目,其中包括所有子文件夹的标题和来源。添加此文件夹的项目作为项目参考修复了未解决的包含AND突然我的错误和警告都提供链接! (我告诉这个项目停止构建第一个错误,这可以避免冗长的编译时间。) - sage


右键单击工作区中的项目,然后选择 Properties  - > C++ General  - > Paths and Symbols,然后在可用选项卡上添加特定编译器的包含和符号,添加库以及其他所需的内容。在那之后 Apply  - 它应该开始重新索引,你的问题应该消失了。


5
2017-08-30 10:44



感谢您回复Alexandru。不幸的是,这似乎没有帮助我 - 下面的列表 Properties > C++ General > Paths and Symbols 似乎是下面列表的一面镜子 C/C++ Build > Settings > Tool Settings > Includes,我已经填充了编译项目所需的包含目录的路径。但是,索引器仍然会在这些目录中发出“未解析的包含”警告。 - jam
您可以尝试以下操作:右键单击您的项目, Properties  - > Index 并尝试那里的选项: Rebuild, Update with modified files, Freshen all files, Search for unresolved includes。通常选项2和3可以解决我的问题。 - Alexandru C.
我已经重建了我的索引,但感谢你的建议。我相信我可能已经解决了这个问题 - 我注意到在一个项目中未解决的包含实际上是以其他项目的名义列出的。所以,我添加了该项目作为参考,重建了索引,现在它说0未解决包括。将看看此修复程序是否适用于我的所有项目,如果是这样,将其添加为答案:) - jam
谢谢!玩了一段时间后让它工作,我不得不手动添加所有的子文件夹 - user1708860


我有一个类似的问题,我的项目将在其中构建,但在Eclipse Kepler中显示未解决的问题。

就我而言,我已经采用了现有的ARM项目,并创建了一个使用不同工具链的自定义构建配置。新的构建配置具有所有正确的包含,因此项目正确构建但索引器没有提取它。

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


5
2018-01-07 19:48



这对我有所帮助。我已经将代码移到了一个链接文件夹中,当它编译好的时候,Indexer错过了那里的所有内容。使用活动构建的设置修复此问题,因此必须记住某些历史记录。谢谢! - user1867382


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


#include“subdirectory \ include_2.h”


0
2017-12-30 11:28