这里是我的问题:我想使用的任何GCC或铛提供C ++ 11种功能。 不过,我有以下要求:
- 我使用的是Mac
- 我依赖着一串由自制软件提供的( 真的不想编译它们自己)库。 具体地说OSG,其本身依赖于一个其他吨库。 而提高,虽然我总是可以编译自己。
自制似乎只想使用GCC(请纠正我,如果我错了)。 我找不到任何选项,切换到LLVM来代替。 虽然我知道这可能的事实是,并非所有库兼容LLVM又是因为,这仍然将是那些一个不错的功能。
海合会的MAC自带预装的gcc版本是4.2。 GCC 4.2不具有C ++要求11点的特征。 我已经安装了通过自制软件4.7,但对于如何设置自制的搜索使用它都说不这样做(GCC 4.2的Mac是不是香草版本,所以在4.7版本我将无法编译有些事情)。
我的问题是:有没有人有他们所实施来解决这个问题的任何建议或修正? 我应该放弃自制? 有谁知道,如果家酿有一个计划切换到LLVM的未来? 有没有人有如何处理这些不兼容任何升级计划?
我看不出自制如何能继续从长远来看依赖于GCC 4.2,但没有发现对此事的任何真正的讨论。
在Mac上的默认GCC是GNU不是真正的GCC。 这是LLVM-GCC其实,这是GCC的一个分支。 几年前,LLVM-GCC被终止,并代之以DragonEgg ,这是一个GCC插件使用LLVM的GCC后端。
LLVM-GCC仅仅是一个编译器前端,其作用是利用GCC前端翻译的源代码转换成LLVM IR [ 简介LLVM 11.3]。 一旦IR产生,LLVM后端将使用它来生成二进制代码。 这一步无关与海湾合作委员会。
上述目标是完全由10.7,其成分都被铛,由LLVM提供一个前端编译实现。
但苹果仍然保持LLVM-GCC和GCC运行库。 我想其目的可能是提供了一个机会,编译一些代码GCC只。
现在让我们来回答你的问题:
- 如果您想使用C ++ 11点的特性,使用
clang++ -stc=c++11 -stdlib=libc++
来代替。 而铛可能已经支持的所有C ++ 11种功能 。 - 如果你想支持自制软件LLVM,它已经支持,至少在后端。
- 如果你想使用铛作为编译器前端自制的,这取决于自制软件的时间表。 例如,可以追加
--with-c++11
的参数使用铛编译boost.But你不能使用这个参数时, brew install autoconf
。 事实上,一些组件可能无法正确地编制铿锵。 - 如果你知道它可以通过铛但自制编译还不支持,你必须砍在相应的Ruby脚本
$HOMEBREW_ROOT/Library/Formula
目录。 幸运的是,在大多数情况下,替代./configure blablabla
用./configure blablabla CXX=clang++ -stc=c++11 -stdlib=libc++
效果很好。 顺便说一句,如果你破解成功后,请拉请求自制 。
所以,尝试一下,有乐趣。
我有一个OS X山狮的环境和使用C ++ 11。 在这个答案,我就打断你的要求不编译你自己的东西。
我用自制和,我必须说,我劝你还是放弃这取决于它为您提供铛和的libc ++和它的所有公式与他们建立。
我做了什么,和我一样,是
- 克隆LLVM,铛,并从仓库的libc ++。
- 安装到
/opt/local
,并把/opt/local/bin
在顶部上/etc/paths
。 - 建立自己的开发的东西与我的新铿锵。
- 让自制软件安装类似Git和东西我不会为开发工具,只需使用。
我是按照其安装到铛构建指令/opt/local
。
对于的libc ++,一个细节:在运行后buildit
剧本,我已经符号链接的包括目录/opt/local/lib/c++/v1
(上铿锵/opt/local
查找此为默认目录),也符号链接的库到/opt/local/lib/
(但看看这二进制文件不会自动链接到libc ++上/opt/local/lib
,你必须使用install_name_tool为)。
使用
clang++ -std=c++11 -stdlib=libc++
您还可以安装自制-的DUP最新的gcc
brew install [flags] https://raw.github.com/Homebrew/homebrew-dupes/master/gcc.rb
对于LLVM, brew install --HEAD llvm
。 要使用铿锵或冲泡安装GCC,加上--with-clang
或--with-gcc=gcc-xx
其中xx是你想要的版本。