15

これが私の問題です:gccまたはclangのいずれかによって提供されるC++11機能を使用したいです。ただし、次の要件があります。

  1. 私はマックを使用しています
  2. 私は自作によって提供されるたくさんのライブラリに依存しています(そして本当にそれらを自分でコンパイルしたくありません)。具体的には、OSG自体が他の多くのライブラリに依存しています。そしてブーストしますが、私はいつでもそれを自分でコンパイルできます。

Homebrewはgccのみを使用したいようです(間違っている場合は修正してください)。代わりにLLVMに切り替えるオプションが見つかりません。これは、まだすべてのライブラリがLLVMと互換性があるわけではないという事実が原因である可能性があることを理解していますが、それでも、互換性のあるライブラリにとっては優れた機能です。

gccのmacにプリインストールされているgccのバージョンは4.2です。gcc 4.2には、必要なc++11機能がありません。自作で4.7をインストールしましたが、自作を使用するように設定する方法を検索すると、すべて実行しないでください(Macのgcc 4.2はバニラバージョンではないため、入手した4.7バージョンはコンパイルできません)いくつかのもの)。

私の質問は次のとおりです。この問題を回避するために実装した提案や修正はありますか?自作をあきらめるべきですか?Homebrewが将来LLVMに切り替える計画があるかどうか誰かが知っていますか?これらの非互換性に対処する方法について、誰かがアップグレード計画を持っていますか?

自作が長期的にgcc4.2にどのように依存し続けることができるかはわかりませんが、この問題に関する実際の議論は見つかりませんでした。

4

4 に答える 4

7

OS X Mountain Lion 環境で C++11 を使用しています。この回答では、独自のものをコンパイルしないという要件を破ります。

私は Homebrew を使用していますが、clang と libc++、およびそれらで構築されたすべての式を提供するために Homebrew に依存することをあきらめることをお勧めします。

私がやったこと、そして私が好きなことは、

  • リポジトリから llvm、clang、libc++ を複製します。
  • に取り付けて上に/opt/local置きます。/opt/local/bin/etc/paths
  • 私の新しいclangで私の開発物を構築してください。
  • git のようなツールや、私が開発しないものをインストールするために Homebrew を使用してください。

にインストールするためのclangビルド手順に従いました/opt/local

libc++ の場合、1 つの詳細:builditスクリプトを実行した後、インクルード ディレクトリを/opt/local/lib/c++/v1(clang on/opt/localはこれをデフォルト ディレクトリとして検索します) にシンボリック リンクし、libs もシンボリック リンクしました/opt/local/lib/(ただし、バイナリは自動的に libc++ on にリンクされないことに注意して/opt/local/libください。そのためにはinstall_name_toolを使用する必要があります)。

于 2013-01-03T05:13:04.867 に答える
1

使用する

clang++ -std=c++11 -stdlib=libc++ 

homebrew-dups から最新の gcc をインストールすることもできます

brew install [flags] https://raw.github.com/Homebrew/homebrew-dupes/master/gcc.rb
于 2013-01-03T04:41:51.877 に答える
0

LLVM の場合、brew install --HEAD llvm. clang または brew でインストールされた gcc を使用するには、 --with-clangorを追加--with-gcc=gcc-x.xします。ここで、xx は必要なバージョンです。

于 2013-04-24T16:55:55.970 に答える