Eclipse、Macos 10.8 和 C++11

标签 eclipse macos c++11

我正在尝试使用 C++11,但 eclipse 遇到了一些问题。我使用 macports 来获取 gcc48,并且遵循了各种指南来让 eclipse 使用新编译器,包括 this , this , 我还将编译器命令从 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' 无法解析

我想继续使用 Eclipse,而不仅仅是一个项目管理器和 makefile 生成器,因此我们将不胜感激!

最佳答案

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

  1. 在“项目”->“属性”->“C/C++ 构建”->“设置”->“Gcc C++ 编译器”->“命令”中更改编译器(将 g++ 更改为 clang++)。

  2. 在 Project->Properties->C/C++ Build -> Settings -> Gcc C++ Compiler -> Miscellaneous 中,将 -std=c++11 -stdlib=libc++ 添加到标志。

  3. 与 C/C++ Build -> Settings -> Gcc C++ Linker -> Command 下的链接器执行相同的操作

  4. 在“属性”->“C/C++ 构建”->“设置”->“Gcc C++ 链接器”->“其他”中,将 -stdlib=libc++ 添加到链接器标志。

  5. 在属性->C/C++常规->预处理器包含路径、宏等->提供程序->CDT GCC内置编译器设置中,关闭共享选项,并附加-std=c+ +11 到命令以获取编译器规范。

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

关于Eclipse、Macos 10.8 和 C++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17550450/

相关文章:

eclipse - Springsource Tool中src/main/java和src有什么区别

java - 转到下一页时应用程序崩溃( Intent )

java - Jenkins:您的 JAVA_HOME 在 OS X 上无效

eclipse - 在 Mac 中恢复 Eclipse 工具栏

c++ - 为什么这个 noexcept 对性能如此重要,而类似的其他 noexcept 却没有?

c++ - 在 std::abs 函数上

java - eclipse-如何从远程网络驱动器添加现有源文件夹

OS X 应用程序的 XCode 5 远程调试

c++ - 将引用分配给局部变量,如果局部变量超出范围,它会超出范围吗?

java - Eclipse 挂起一个特定的线程,同时让其他线程运行