Come installare il recente clang ++ con Homebrew?


20

ho provato

brew install llvm

ma dopo non riesco a trovare alcun clang++*eseguibile sotto /usr/local.

Quindi la mia domanda: come ottenere clang ++ tramite Homebrew?

Risposte:


18

A partire dal 2018, il repository Versioni Homebrew ('tap') è fuori servizio .

Il pacchetto stock di Homebrew llvm non include ancora clang / clang ++, per impostazione predefinita. Pertanto, non fa parte del pacchetto predefinito ("in bottiglia").

Si può costruire tramite:

brew install --with-toolchain llvm

E poi usalo tramite ad esempio:

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

Ma questa --with-toolchainbuild indotta richiede molto tempo ed è quindi inadatta in un ambiente di integrazione continua (CI).

Tuttavia, il clangore che viene fornito con XCode recente (che è disponibile in ambienti CI come Travis-CI, la versione 9 è l'impostazione predefinita, anche 10 disponibili) non è più obsoleto come una volta (Apple utilizza uno schema di versione fantasy per clang che non corrisponde ai numeri di versione di clang a monte ma cmake rileva ad es. per AppleClang 9.1.0.9020039 la versione 4.0.1). Pertanto, è sufficiente creare software C ++ 11 / C ++ 14 con dipendenze comuni come Boost (ad es. Versione 1.67).

2016 Stato dell'arte

Il llvmpacchetto in Homebrew non include clang++, per impostazione predefinita. Durante l'installazione, è necessario aggiungere --with-clangalla riga di comando (ad esempio brew install --with-clang llvm). L'extra --with-clangproduce una compilazione completa del pacchetto perché è disponibile un solo pacchetto di pre-build ('in bottiglia') llvm(senza clang++). Oltre a ciò: il llvmpacchetto è relativamente vecchio - attualmente ha llvm 3.6 - dove 3.7 è stato rilasciato 6 mesi fa.

Quindi, per ottenere un clang++3.7 in bottiglia devi installare il pacchetto llvm dalle versioni Homebrew :

$ brew tap homebrew/versions
$ brew install llvm37

È quindi disponibile sotto:

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

La formula nota anche:

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"

Nota che se stai facendo questo per Emscripten, devi usare la versione clang che forniscono.
Claudiu,

7
L'ultima Homebrew llvm(3.9.1) nel homebrew-corerubinetto ora include clang, clang++ecc sotto/usr/local/opt/llvm/bin
shadowtalker

1
Complemento al commento di @ssdecontrol: ora c'è un --with-toolchainargomento di cui alcuni utenti potrebbero aver bisogno. Maggiori informazioni qui, embeddedartistry.com/blog/2017/2/20/installing-clangllvm-on-osx
driftcatcher

Shadowtalker ha ragione e da allora l' --with-clangargomento è stato rimosso.
MCCCS

@shadowtalker, devo eseguire brew install --with-toolchain llvmcome suggerisce @hangtwenty o è brew install llvmsufficiente? Con l' --with-toolchainopzione il pacchetto viene compilato - il che richiede molto tempo - rispetto alla semplice installazione di un pacchetto precompilato (in bottiglia / binario).
maxschlepzig,

4

Devi installarlo con l' --with-clangopzione:

$ 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

Quindi, troverai clang++su / usr / local / opt / llvm / bin / clang ++ .


1
Hm, è ancora possibile ottenere un pacchetto binario pre-costruito (cioè una 'bottiglia')? Intendo quando si specifica --with-clang? Lo sto chiedendo perché intendo chiamarlo in un ambiente di integrazione continua ...
maxschlepzig,

Se esiste, lo so, ma non penso che esista.
jherran,

1
In realtà, esiste una versione in bottiglia disponibile tramite Versioni Homebrew. Vedi anche la mia risposta.
maxschlepzig,

3

Le opzioni --with-clang e --with-toolchain non funzionano più. Questo ha funzionato per me:

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

Ho compilato con

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

1
Sfortunatamente il clang binario homebrew è rotto. Non include la /usr/local/includecartella poiché la base include dir, quindi tutta la compilazione del software non riesce. Clang fornito da xcode non ha fsanitize=leake ccc-analyzer. Quindi entrambi i rumori su Mac OS sono rotti. Devi costruirlo con tutte le funzionalità abilitate dalla fonte. Ma la compilation ucciderà il tuo CI come travis. Quindi devi ospitare e mantenere un CI separato solo per Apple. Apple va bene solo per un semplice sviluppo, qualsiasi altra cosa richiede dolore.
Puchu,

3

Ora è sufficiente eseguire:

brew install llvm

La bottiglia ora include clangper impostazione predefinita.


Siamo alla ricerca di risposte lunghe che forniscano una spiegazione e un contesto. Non dare solo una risposta di una riga; spiega perché la tua risposta è giusta, idealmente con citazioni. Le risposte che non includono spiegazioni potrebbero essere rimosse.
Tetsujin,

@Tetsujin Sono d'accordo con te, ma questa è essenzialmente una risposta completa. Descrive completamente ciò che è necessario e perché
Lars Nielsen il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.