如何将EclipseCDT设置为索引/解析std文件

如何将EclipseCDT设置为索引/解析std文件,eclipse,eclipse-cdt,Eclipse,Eclipse Cdt,我有以下代码: #include <iostream> using namespace std; int main() { vector<int> v; //Symbol vector could not be resolved return 0; } #包括 使用名称空间std; int main() { 向量v;//无法解析符号向量 返回0; } IDE抱怨“矢量”:无法解析符号矢量 如果我右键单击“vector”关键字->源->添加包含,则不

我有以下代码:

#include <iostream>
using namespace std;

int main()
{
    vector<int> v; //Symbol vector could not be resolved

    return 0;
}
#包括
使用名称空间std;
int main()
{
向量v;//无法解析符号向量
返回0;
}
IDE抱怨“矢量”:无法解析符号矢量

如果我右键单击“vector”关键字->源->添加包含,则不会发生任何事情

如果我手动添加
#include
,则一切正常,该文件已编制索引,我可以使用其成员函数

但是,我希望IDE为我生成这些包含文件,而不是手动添加它们。如何将eclipse设置为这样工作


我正在使用Ubuntu 16.04和Eclipse CDT Neon。

只有当项目中的另一个文件已经包含
时,这才有效

添加Include的工作方式是搜索项目的索引,以查找调用该项目的名称。如果它在索引中找到与该名称对应的绑定(函数、类型等),它将看到哪个文件声明该绑定,然后为您包含该文件


要使其工作,与名称对应的绑定必须已经在索引中。对于在项目外部文件(如标准库标题)中声明的绑定,仅当外部文件已包含在项目中的某个文件中时才会出现这种情况。

@HighCommander4-通过实践,我注意到索引器的行为与您的描述中的行为类似。必须有另一个文件已包含
vector
,才能将其包含在索引中

鉴于此行为,我们可以执行以下操作:

  • 一种解决方法是使用一个虚拟cpp文件,包括
    。大多数stl头都在那里。标题可用于GCC。对于MSVC,我们可以简单地将的内容复制到这个虚拟cpp文件中

  • 另一种解决方法是将链接文件夹添加到stl的位置,在我的示例中,这是
    /usr/include/c++/5
    。在这种情况下,整个stl库从一开始就被索引