我是 C++11 的新手。我试过了:
clang++ -std=c++11 -stdlib=libc++ *.cc
它有效,但我的问题是:
- 无论如何将这些标志设置为clang ++的默认值?
- 如何将 g++ 4.2 更新为支持 C++11 的版本?
- 您认为哪种方式在 mac 上编译 C++11 代码最好?
谢谢。
Brett 已经描述了如何使用 MacPorts 安装 GCC。以下是使用Homebrew的方法,它将自己(正确地!)作为 MacPorts 的现代替代品:
brew tap homebrew/versions
brew install --enable-cxx gcc48
据我所知,安装最新 Clang 的最简单方法是下载 dsign 答案中链接的编译版本——正如 Brett 所说,由于 Apple 在内部使用 clang,因此不建议修改该安装——只需将你的放在其他地方.
关于什么是“最好的”编译器,除了 Brett 已经说过的内容之外,还有两件事需要考虑:
<regex>
的实现,这是一种耻辱。在 IDE 之外(例如,在 shell 中),我通常将变量CXX
设置为:"clang -std=c++11 -stdlib=libc++"
in .profile
/ .tcshrc
/ 等,因为大多数配置脚本也都采用这种方式。在 cmd 行上,我可能会使用:$CXX -c foo.cc
MacPorts gcc-4.8.1 运行良好:"[sudo] port install gcc48 [-universal]"
"[sudo] port select --set gcc gcc48"
将使其成为默认值gcc
,g++
等。
不要尝试更新或修改系统工具,例如 Xcode 附带的旧 gcc-4.2 / llvm 混合工具。
我不知道您在问题的第三部分中所说的“最佳”方式是什么意思,但是在 Apple 的支持下(他们聘请了 LLVM 的主要作者)以及背后的 FreeBSD 等其他项目,clang 只会继续改进。它已经比 gcc快得多,具有更好的错误消息/诊断(尤其是对于 C++ 和模板),以及模块化架构。对于 OS X,这是明确的选择。
像大多数 Apple 开发人员一样,在 Xcode 的构建设置中完成这一切。Xcode 在许多方面简化了生活。