繁体   English   中英

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

[英]Compile C++11 code on mac?

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

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

它有效,但我的问题是:

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

谢谢。

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

brew tap homebrew/versions
brew install --enable-cxx gcc48

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

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

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

在IDE之外(例如,在shell中),我通常将变量CXX设置为: "clang -std=c++11 -stdlib=libc++" in .profile / .tcshrc / etc.,因为这是由大多数配置脚本。 在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混合。

我不知道你在问题的第3部分中的'最佳'方式是什么意思,但是在Apple的支持下(他们雇用了LLVM的主要作者),以及FreeBSD等其他项目背后,clang只会继续改进。 这已经比GCC 更快 ,具有更好的错误消息/诊断(特别是C ++和模板)和模块化架构。 对于OS X,它是明确的选择。

回答:

  1. 我不这么认为
  2. 你在4.2旁边安装另一个g ++版本,删除系统附带的那个是不好的业力。 要安装新的,请检查此项
  3. 铿锵声也是如此。 你可以在这里下载。

一般来说,我完全建议你得到更好的g ++编译器,4.2很老,代码质量不是很好。 使用c ++ 11是完全值得的。

像大多数Apple开发人员一样,在Xcode的构建设置中完成所有操作。 Xcode以多种方式简化了生活。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM