Bagaimana cara menginstal clang ++ terbaru dengan Homebrew?


20

Saya sudah mencoba

brew install llvm

tapi setelah itu saya tidak dapat menemukan clang++*executable di bawah /usr/local.

Jadi pertanyaan saya: Bagaimana cara mendapatkan dentingan ++ melalui Homebrew?

Jawaban:


18

Pada 2018, repositori Versi Homebrew ('ketuk') tidak berfungsi .

Paket stock Homebrew llvm masih belum menyertakan clang / clang ++, secara default. Dengan demikian, ini bukan bagian dari paket prebuilt ('botol').

Seseorang dapat membangunnya melalui:

brew install --with-toolchain llvm

Dan kemudian menggunakannya via mis:

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

Tetapi --with-toolchainpembangunan yang diinduksi ini membutuhkan waktu yang sangat lama dan karenanya tidak cocok dalam lingkungan integrasi berkelanjutan (CI).

Namun, dentang yang datang dengan XCode baru-baru ini (yang tersedia di lingkungan CI seperti Travis-CI, Versi 9 adalah default, 10 tersedia juga) tidak ketinggalan jaman lagi seperti dulu (Apple menggunakan skema versi fantasi untuk dentang yang tidak cocok dengan nomor versi dentang hulu tetapi cmake mendeteksi misalnya untuk AppleClang 9.1.0.9020039 versi 4.0.1). Dengan demikian, cukup untuk membangun perangkat lunak C ++ 11 / C ++ 14 dengan dependensi umum seperti Boost (misalnya versi 1.67).

Keadaan Seni 2016

The llvmpaket di Homebrew tidak termasuk clang++, secara default. Saat menginstalnya, Anda harus menambahkan --with-clangke baris perintah (misalnya brew install --with-clang llvm). Hasil tambahan --with-clangkompilasi paket lengkap karena hanya ada satu paket prebuild ('botol') llvmyang tersedia (tanpa clang++). Selain itu: llvmpaketnya relatif lama - saat ini memiliki llvm 3.6 - di mana 3.7 dirilis 6 bulan lalu.

Jadi, untuk mendapatkan botol clang++3.7, Anda harus menginstal paket llvm dari Homebrew Version :

$ brew tap homebrew/versions
$ brew install llvm37

Ini kemudian tersedia di bawah:

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

Rumusnya juga mencatat:

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"

Perhatikan bahwa jika Anda melakukan ini untuk Emscripten, Anda harus menggunakan versi dentang yang mereka sediakan.
Claudiu

7
Homebrew terbaru llvm(3.9.1) di homebrew-coretap sekarang termasuk clang, clang++, dll di bawah/usr/local/opt/llvm/bin
shadowtalker

1
Lengkapi komentar @ ssdecontrol: sekarang ada --with-toolchainargumen yang dibutuhkan beberapa pengguna. Info lebih lanjut di sini, embeddedartistry.com/blog/2017/2/20/installing-clangllvm-on-osx
driftcatcher

Shadowtalker benar, dan sejak itu, --with-clangargumen telah dihapus.
MCCCS

@shadowtalker, apakah saya harus mengeksekusi brew install --with-toolchain llvmkarena @hangtwenty menyarankan atau brew install llvmcukup? Dengan --with-toolchainopsi paket dikompilasi - yang sangat memakan waktu - dibandingkan dengan hanya menginstal paket prebuilt (botol / biner).
maxschlepzig

4

Anda harus menginstalnya dengan --with-clangopsi:

$ 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

Kemudian, Anda akan menemukan clang++di / usr / local / opt / llvm / bin / clang ++ .


1
Hm, mungkinkah masih mendapatkan paket biner pra-bangun (yaitu 'botol')? Maksud saya saat menentukan --with-clang? Saya bertanya karena saya bermaksud menyebutnya dalam lingkungan integrasi berkelanjutan ...
maxschlepzig

Jika ada, saya tahu itu, tapi saya rasa itu tidak ada.
jherran

1
Sebenarnya, ada versi botol yang tersedia melalui Versi Homebrew. Lihat juga jawaban saya.
maxschlepzig

3

Opsi --with-clang dan --with-toolchain tidak berfungsi lagi. Ini bekerja untuk saya:

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

Saya dikompilasi dengan

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

1
Sayangnya dentang biner homebrew rusak. Itu tidak termasuk /usr/local/includefolder sebagai basis termasuk dir, sehingga semua perangkat lunak gagal. Dentang yang disediakan oleh xcode tidak memiliki fsanitize=leakdan ccc-analyzer. Jadi kedua dentang di mac os rusak. Anda harus membangunnya dengan semua fitur yang diaktifkan dari sumber. Tetapi kompilasi akan membunuh CI Anda seperti travis. Jadi, Anda harus meng-host dan mempertahankan CI terpisah hanya untuk apel. Apple hanya baik untuk pengembangan sederhana, apa pun membutuhkan rasa sakit.
puchu

3

Sekarang sudah cukup untuk dijalankan:

brew install llvm

Botol sekarang termasuk clangsecara default.


Kami mencari jawaban panjang yang memberikan penjelasan dan konteks. Jangan hanya memberikan jawaban satu baris; jelaskan mengapa jawaban Anda benar, idealnya dengan kutipan. Jawaban yang tidak termasuk penjelasan dapat dihapus.
Tetsujin

@Tetsujin saya setuju dengan Anda, tetapi ini pada dasarnya adalah jawaban lengkap. Ini sepenuhnya menggambarkan apa yang dibutuhkan dan mengapa
Lars Nielsen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.