在mac上编译C++ 11代码?

JAS*_*SON 5 c++ c++11

我是C++ 11的新手.我试过了:

clang++ -std=c++11 -stdlib=libc++ *.cc

它有效,但我的问题是:

  1. 无论如何将这些标志设置为clang ++的默认值?
  2. 如何将g ++ 4.2更新为支持C++ 11的版本?
  3. 你觉得哪种方式最好在mac上编译C++ 11代码?

谢谢.

Kon*_*lph 6

Brett描述了如何使用MacPorts安装GCC.以下是使用Homebrew的方法,它将自己的样式(正确地!)作为MacPorts的现代替代品:

brew tap homebrew/versions
brew install --enable-cxx gcc48
Run Code Online (Sandbox Code Playgroud)

据我所知,安装最新Clang的最简单方法是下载在dsign的答案中链接的编译版本 - 正如Brett所说,由于Apple在内部使用clang,因此不建议修改安装 - 只需将其放在其他地方.

关于"最佳"编译器是什么,除了Brett已经说过的内容之外,还有两件事需要考虑:

  1. GCC 比Clang 更老,更成熟.Clang中偶尔会发生内部编译器错误.也就是说,它正在迅速成熟,因为它被几家公司推动.
  2. Clang是C++ 11的完整功能,而GCC 4.8则不是.一个非常明显的例子是GCC 4.8仍然没有工作<regex>实现,这是一个遗憾.


Bre*_*ale 5

一个IDE(例如,壳)之外,我通常有变量CXX设置为:"clang -std=c++11 -stdlib=libc++".profile/ .tcshrc/等,因为这是大多数的配置脚本拿起了。在cmd行上,我可能会使用:$CXX -c foo.cc

MacPorts gcc-4.8.1运作良好: "[sudo] port install gcc48 [-universal]"

"[sudo] port select --set gcc gcc48"将使这个默认的gccg++等等。

不要尝试更新或修改系统工具,例如Xcode随附的旧gcc-4.2 / llvm混合。

我不知道您在问题的第三部分中“最好”的意思是什么,但是在苹果公司的支持下(他们聘请了LLVM的主要作者),以及其他支持FreeBSD的项目,clang只会继续发展。它已经快于GCC,具有更好的错误消息/诊断(特别是C ++和模板)和模块化架构。对于OS X,这是显而易见的选择。