在Eclipse Juno / Kepler / Luna CDT中启用C ++ 11
编辑:事实certificate,这并不是特定于Eclipse开普勒。 我必须为Eclipse Juno使用相同的过程。 问题是,在回答这个问题的其他职位似乎有缺失的步骤。
我正在使用Eclipse Kepler for C ++,我试图使用C ++ 11,并得到错误。 当我编译我得到的错误
错误:在C ++ 98模式下不允许使用基于范围的for循环
我按照post的指示
Eclipse CDT C ++ 11 / C ++ 0x支持
Eclipse Juno提供的解决scheme不起作用。
不同的意见build议重新启动日食和清理和重build。 这没有什么区别。
有两件事你必须做,首先你需要设置你的编译器,然后你需要设置CDT的语言处理器。 既然你没有提到你正在使用哪个编译器,我会认为它是GCC,但其他编译器的步骤是相似的。 (注意,你需要一个支持C ++ 11的编译器,当然。)
设置编译器非常简单:
- 右键单击您的项目,然后单击属性
- 在C / C ++生成下单击设置
- 在GCC C ++编译器下,单击其他
- 在“其他标志”框中,将“-std = c ++ 11”附加到标记列表中。
- 单击应用并确定
在这一点上,你应该能够重build你的项目,并让它运行。 但是CDT仍然可能为C ++ 11包含错误。 以下是你如何解决这个问题:
- 右键单击您的项目,然后单击属性
- 在C / C ++常规下单击“预处理器包含path,macros”
- select提供者选项卡
- 列表中应该有一个项目,例如“GCC Built in Compiler Settings”。 select这个条目。
- 取消选中“Use global provider …”选项
- 在列表下面有一个框,上面写着“Command to get compiler specs”。 附加“-std = c ++ 0x”。
- 使用右上方的“上移”button,移动列表顶部的“GCC内置编译器设置”提供程序。
- 单击应用,然后确定。
- 回到Eclipse工作区,select“项目菜单”,C / C ++索引,然后单击“重新parsing未parsing的包含”。
Eclipse Kepler服务版本1(Build ID:20130919-0819)中的C ++ 11支持
在最新版本的Eclipse Kepler SR1中,您只需添加-std = c ++ 11
- 右键单击您的项目,然后单击属性
- 导航到C / C ++ General和Preprocessor Include Paths,Macros等
- select提供者选项卡
- 将-std = c ++ 11添加到命令以获取编译器规格:
- 应用更改,索引应自动生成。
“获取编译器规范的命令:”- line应该如下所示:
${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11
从CDT 8.3开始( 作为Kepler更新提供 ),在构build设置中有一个新的方言选项:
我使用Eclipse开普勒,并解决它我做到了这一点:
1 – 右键单击Project >> Proprietes >> C / C ++ Build :: Settings
2 – 去GCC G ++编译>>其他>>其他标志
i then added -std=c++11 hit apply and ok
这解决了我的问题!
我希望它有帮助!
在这里运行eclipse indigo和cdt 8.0.2。 我遵循所有的指南,但仍然有必要手动设置预处理器定义,以find像std :: unique_ptr的东西。 包含文件“内存”检查这一点。 在项目属性的“C ++常规”中的“path和符号”下的“符号”选项卡中将__cplusplus设置为201103L。
添加方言标志“-std = c ++ 11”到项目属性 – > C / C ++编译 – >设置 – >工具设置(GCC C ++编译器 – >方言)解决了我在Eclipse Kepler中的问题,除了上述设置。
我正在使用Eclipse Luna,在C / C ++ Build – > Settings下没有“Tool Settings”。 我build议将-std = c ++ 11添加到“C / C ++常规 – >预处理程序包含 – >提供程序”下的编译器规范命令行中。 但是这仍然不能满足我的索引器解决emplace()的能力。
所以我查看了头文件,发现emplace函数依赖于__cplusplus> = 201103L。 所以我只是添加了预处理器符号“__cplusplus”,并给它的值201103。
有点hackish,但索引器是快乐的。 (makefiles定义我的构build标志,而不是eclipse项目)
MrEricSir提供的解决scheme只有在安装了最新的Eclipse Oxygen CDT后才能使用。 火星CDT对我来说不起作用。