Homebrewで最近のclang ++をインストールする方法は?


20

私はもう試した

brew install llvm

しかし、その後、私はclang++*実行可能ファイルを見つけることができません/usr/local

したがって、私の質問:Homebrew経由でclang ++を取得する方法は?

回答:


18

2018年の時点で、Homebrew Versionsリポジトリ(「タップ」)はサービスを停止しています。

デフォルトのHomebrew llvmパッケージには、clang / clang ++がまだ含まれていません。したがって、それは事前に構築された(「ボトル入り」)パッケージの一部ではありません。

次の方法でビルドできます。

brew install --with-toolchain llvm

そして、例えば、それを介してそれを使用します:

$ PATH="/usr/local/opt/llvm/bin:$PATH" \
    LDFLAGS='-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib' \
    cmake ...

ただし、この--with-toolchain誘導ビルドには非常に長い時間がかかるため、継続的インテグレーション(CI)環境には適していません。

ただし、最近のXCode(Travis-CIなどのCI環境で利用可能なclang、バージョン9がデフォルトで、10も利用可能)に付属するclangは、以前のようにもう時代遅れではありません(Appleはファンタジーバージョンスキームを使用しています)アップストリームのclangバージョン番号とは一致しないが、cmakeはAppleClang 9.1.0.9020039の場合はバージョン4.0.1などを検出するclangの場合。したがって、Boost(たとえば、バージョン1.67)などの一般的な依存関係を持つC ++ 11 / C ++ 14ソフトウェアをビルドするだけで十分です。

2016年の最新技術

llvmHomebrew のパッケージにはclang++、デフォルトでは含まれていません。インストールするとき--with-clangは、コマンドラインに追加する必要があります(例brew install --with-clang llvm)。余分なもの--with-clangは、llvm使用可能なプリビルド(「ボトル入り」)パッケージが1つしかないため(パッケージなしclang++)、完全なパッケージコンパイルを生成します。それに加えて、llvmパッケージは比較的古い-現在llvm 3.6を持っています-3.7は6か月前にリリースされました。

したがって、ボトルclang++3.7 を取得するには、Homebrewバージョンからllvmパッケージをインストールする必要があります。

$ brew tap homebrew/versions
$ brew install llvm37

その後、以下で利用可能です。

/usr/local/bin/clang++-3.7

数式は次のことにも注意します。

To link to libc++, something like the following is required:
  CXX="clang++-3.7 -stdlib=libc++"
  CXXFLAGS="$CXXFLAGS -nostdinc++ -I/usr/local/opt/llvm37/lib/llvm-3.7/include/c++/v1"
  LDFLAGS="$LDFLAGS -L/usr/local/opt/llvm37/lib/llvm-3.7/lib"

Emscriptenでこれを行う場合は、提供されているclangバージョンを使用する必要があることに注意してください。
クラウディ

7
最新の自作llvmで(3.9.1)homebrew-coreタップは今含まれclangclang++下など、/usr/local/opt/llvm/bin
shadowtalker

1
@ssdecontrolのコメントを補完する:--with-toolchain一部のユーザーが必要になるかもしれないという議論があります。詳細はこちら、embeddedartistry.com
blog / 2017/2/20 / installing

Shadowtalkerは正しいです。それ以来、--with-clang議論は削除されました。
MCCCS

@ shadowtalker、brew install --with-toolchain llvm@ hangtwentyが示唆している、またはbrew install llvm十分であるため、実行する必要がありますか?--with-toolchain非常に時間がかかるです- -ちょうどビルド済み(ボトル/バイナリ)パッケージをインストールするに比べてパッケージがコンパイルされるオプション。
maxschlepzig

4

--with-clangオプションでインストールする必要があります:

$ brew install --with-clang llvm
==> Installing dependencies for llvm: cmake
==> Installing llvm dependency: cmake
==> Downloading https://homebrew.bintray.com/bottles/cmake-3.4.3.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring cmake-3.4.3.el_capitan.bottle.tar.gz
==> Caveats
Emacs Lisp files have been installed to:
  /usr/local/share/emacs/site-lisp/cmake
==> Summary
🍺  /usr/local/Cellar/cmake/3.4.3: 1,980 files, 27.4M
==> Installing llvm
==> Downloading http://llvm.org/releases/3.6.2/llvm-3.6.2.src.tar.xz
######################################################################## 100.0%
==> Downloading http://llvm.org/releases/3.6.2/cfe-3.6.2.src.tar.xz
######################################################################## 100.0%
==> cmake -G Unix Makefiles /private/tmp/llvm20160211-42310-16fdrbw/llvm-3.6.2.src -DCMAKE_C_FLAGS_RELEASE=-DNDEBUG -DCMAKE_CXX_FLAGS_RELEAS
==> make
==> make install
==> Caveats
LLVM executables are installed in /usr/local/opt/llvm/bin.
Extra tools are installed in /usr/local/opt/llvm/share/llvm.

This formula is keg-only, which means it was not symlinked into /usr/local.

OS X already provides this software and installing another version in
parallel can cause all kinds of trouble.

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/llvm/lib
    CPPFLAGS: -I/usr/local/opt/llvm/include


If you need Python to find bindings for this keg-only formula, run:
  echo /usr/local/opt/llvm/lib/python2.7/site-packages >> /usr/local/lib/python2.7/site-packages/llvm.pth
==> Summary
🍺  /usr/local/Cellar/llvm/3.6.2: 1,350 files, 338.2M, built in 21 minutes 18 seconds

その後、あなたは見つけるでしょうclang++は/ usr / localは/ opt / LLVM / binに/打ち鳴らす++


1
うーん、まだビルド済みのバイナリパッケージ(つまり「ボトル」)を入手することは可能ですか?私が指定するときに意味する--with-clang?継続的インテグレーション環境でそれを呼び出すつもりなので、私は尋ねています
...-maxschlepzig

存在する場合、私はそれについて知っていますが、私はそれが存在するとは思わない。
ジェラン

1
実際には、Homebrewバージョンを介して利用可能なボトルバージョンがあります。私の答えもご覧ください。
maxschlepzig

3

--with-clangおよび--with-toolchainオプションはもう機能しません。これは私のために働いた:

brew install llvm
cd /Library/Developer/CommandLineTools/Packages/
open .
run the installer

私は

CC=/usr/local/cellar/llvm/7.0.1/bin/clang CCX=/usr/local/cellar/llvm/7.0.1/bin/clang++ make

1
残念ながら、自作のバイナリclangは壊れています。/usr/local/includeベースインクルードディレクトリとしてフォルダーが含まれていないため、すべてのソフトウェアビルドが失敗します。xcodeが提供するClangにはfsanitize=leakとはありませんccc-analyzer。そのため、Mac OSの両方のクラングが壊れています。ソースからすべての機能を有効にしてビルドする必要があります。しかし、コンパイルはtravisのようにCIを殺します。そのため、アップル専用の個別のCIをホストおよび維持する必要があります。Appleは単純な開発にのみ適していますが、それ以外のものには苦痛が必要です。
プチュ

3

実行するのに十分です:

brew install llvm

現在、ボトルにはclangデフォルトで含まれています。


いくつかの説明とコンテキストを提供する長い回答を探しています。1行で答えるだけではありません。答えが正しい理由、理想的には引用を説明します。説明を含まない回答は削除される場合があります。
鉄人

@Tetsujin賛成ですが、これは本質的に完全な答えです。必要なものとその理由を完全に説明します
Lars Nielsen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.