我有一个包含多个项目的工作区,所有项目都可以正常编译。但是,由于未解决的包含,一些项目在编辑器中提供了许多关于未解析符号的警告。大多数是来自工作区中的其他项目或第三方库的标题。
谷歌搜索表明这是索引器的一个问题,但我没有找到任何关于如何解决它的连贯解释 - 我假设我需要将这些库的路径添加到索引器的PATH,但我看不到任何选择(我使用Juno)。
有人可以向我解释如何配置CDT的索引器吗?
我也得到了未解决的问题,包括两个项目中STL标题的警告。一些STL头被解析但其他的不是,并且两个项目之间的列表似乎不一样(一个找到像vector和iostream这样的东西,但不是sstream或string,另一个找不到iostream)
可能相关:这些是C ++项目,但所有文件扩展名都是.c。我将GCC C Compiler命令更改为'g ++'来编译它们,但我想我还需要对索引器设置做些什么来应对它?
答案 0 :(得分:6)
好的,我现在已经解决了这个问题。
未解决包括工作区中的其他项目和第三方库通过添加其他项目作为参考来解决。我想编译器知道在哪里看,因为我已经将位置添加到Includes列表中,但是索引器没有(可能是因为eclipse只处理了一次头文件?)
未解决包含来自STL我通过将所有实际上是C ++的.c文件更改为.cpp来修复。只是将编译命令更改为'g ++'显然不足以告诉索引器将项目视为C ++。
在1)的情况下,我需要首先清理/重建引用项目的索引,以删除未解决的包含错误。
答案 1 :(得分:5)
在工作区中右键单击您的项目,选择Properties
- > C++ General
- > Paths and Symbols
,然后在可用选项卡上添加特定编译器的包含和符号,添加库以及其他所需内容。在点击Apply
之后 - 它应该开始重新编制索引,你的问题就应该消失了。
答案 2 :(得分:5)
我有一个类似的问题,我的项目将在其中构建,但在Eclipse Kepler中显示未解决的问题。
在我的案例中,我采用了现有的ARM项目,并创建了一个使用不同工具链的自定义构建配置。新的构建配置具有所有正确的包含,因此项目构建正确但索引器没有提取它。
我通过将索引器设置为使用活动构建配置来修复它。在Window-> Preferences-> C / C ++ - > Indexer中,在标记为“构建配置”的部分下索引器“我选择了”使用活动的构建配置“并将其清除。
答案 3 :(得分:0)
所有答案都有帮助,但还有另一个技巧解决了我的问题。 我发现与编译器相比,索引器不处理包含路径的子目录。因此,在包含头文件时需要更具体。
实施例
#include“subdirectory \ include_2.h”