Eclipse,Macos 10.8和C ++ 11

时间:2013-07-09 14:09:21

标签: eclipse macos c++11

我正在尝试使用C ++ 11,但是eclipse遇到了一些问题。我已经使用macports来获取gcc48,我已经遵循各种指南来让eclipse使用新的编译器,包括thisthis, 我还将编译器命令从eclipse标准更改为g ++ - mp-4.8,如here所述

我正在尝试构建以下程序:

#include <iostream>
 #include<memory>
using namespace std;
int main() {
std::unique_ptr<double> ptr(new double);
*ptr = 11.345;

cout << (*ptr) << endl;

return 0;
}

终端将编译此罚款,

make all 
Building file: ../src/C++11.cpp
Invoking: Cross G++ Compiler
/opt/local/bin/g++ -I/opt/local/bin -I/opt/local/include -O0 -g3 -Wall -c -fmessage-length=0 -std=c++0x -MMD -MP -MF"src/C++11.d" -MT"src/C++11.d" -o "src/C++11.o" "../src/C++11.cpp"
Finished building: ../src/C++11.cpp

Building target: C++11
Invoking: Cross G++ Linker
g++  -o "C++11"  ./src/C++11.o   
Finished building target: C++11

并且程序运行正常。但是,在eclipse中,我仍然收到错误消息Symbol 'unique_ptr' could not be resolved

我想继续使用eclipse不仅仅是项目经理和makefile构建器,所以对此有任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

不是使用g ++,而是使用clang ++。我使用答案Error when compiling some simple c++ codeclang 3.1 can't see unique_ptr?How to compile a C++0x code on Eclipse CDT on mac?作为指导,以便采取以下步骤:

  1. 更改Project-&gt; Properties-&gt; C / C ++ Build - &gt;中的编译器。设置 - &gt; Gcc C ++编译器 - &gt;命令(将g ++改为clang ++)。

  2. 项目中的
  3. &gt;属性 - &gt; C / C ++构建 - &gt;设置 - &gt; Gcc C ++编译器 - &gt;杂项,将-std=c++11 -stdlib=libc++附加到标志上。

  4. 与C / C ++ Build下的链接器相同 - &gt;设置 - &gt; Gcc C ++ Linker - &gt;命令

  5. 属性中的
  6. &gt; C / C ++ Build - &gt;设置 - &gt; Gcc C ++ Linker - &gt;其他,请将-stdlib=libc++添加到链接器标记。

  7. in Properties-&gt; C / C ++ General - &gt;预处理器包括路径,宏等 - &gt;提供商 - &gt; CDT GCC Builtin编译器设置,关闭“共享”选项,并将-std=c++11附加到命令以获取编译器规范。

  8. 编译工作完美,程序运行良好。该日食无法识别智能指针似乎是一个错误:请参阅Turn off eclipse errors (that arent really errors)