Eclipse找不到标准C ++库

Dov*_*Dov 3 c++ eclipse eclipse-cdt

我有一台装有mingw的Windows8计算机,它在c:\ mingw中安装了Eclipse可以成功编译程序,但是它认为行包含的错误在编译时可以正常进行。Eclipse找不到库本身。

当我第一次使用CDT组件在eclipse中构建项目时,它会在使用对象的每个#include和每一行上显示错误。

例:

#include <iostream>
using namespace std;

int main() {
  cout << "hello\n";
}
Run Code Online (Sandbox Code Playgroud)

上面的代码显示了include,using和cout <<行上的错误。我可以通过以下方法消除错误:project-> properties C ++ / General Preprocessor Include然后在providers选项卡上,我可以检查“ CDT Build output parser”并按照下面的第一个答案所述修复错误,即向上检查。但这仅适用于该项目。我每次都要这样做。如何在每次构建新项目而无需重新配置每个项目时让Eclipse仅仅接受标准C ++?

通过进入项目设置并添加目录,我已经能够停止包含中的错误:

c:/ bin / mingw / lib / gcc / include ...

这样就使使用对象的错误仍然存​​在。

#include <iostream>
#include <string>
#include <regex>
using namespace std;

int main() {
    string s = "this is a test.";
    regex e("est");
    smatch m;
Run Code Online (Sandbox Code Playgroud)

带有正则表达式的行仍显示错误:即使代码已编译且可识别正则表达式包含,“无法解析正则表达式类型”。

此外,在安装了Mingw的运行Windows 8.1的另一台计算机上,eclipse不会调试。是否有一些有关如何将Eclipse CDT连接到库的文档?

moc*_*ace 5

虽然您显然可以在Eclipse中使用gcc成功编译代码,但是Eclipse具有自己的内置C ++解析器,您需要单独让它知道您正在使用C ++ 11。

-std=c++11选项添加到CDT GCC Builtin Compiler Settings下面Project propierties -> C/C++ General -> Preprocessor Include Paths,编译器规范应类似于以下内容:

${COMMAND} -E -P -v -dD ${INPUTS} -std=c++11 
Run Code Online (Sandbox Code Playgroud)

更新。请阅读为C / C ++ Indexer设置包含路径和宏,以了解CDT自动发现包含的路径和预处理器符号(也称为扫描仪发现)以适用于支持的工具链的方法。

要点是CDT使用Language Settings Providers来查找包含路径和预处理器符号。并且Language Settings Providers可以在项目属性页面上进行配置"Preprocessor Include Paths, Macros, etc."

进行适当的设置后,您可以将它们设置为模板工作区,然后仅将模板工作区复制到新项目中,或者使用脚本仅设置相关设置。另请参见:为所有Eclipse工作区设置首选项