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连接到库的文档?
虽然您显然可以在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工作区设置首选项。