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?
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:
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-toolchain
build 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).
Il llvm
pacchetto in Homebrew non include clang++
, per impostazione predefinita. Durante l'installazione, è necessario aggiungere --with-clang
alla riga di comando (ad esempio brew install --with-clang llvm
). L'extra --with-clang
produce una compilazione completa del pacchetto perché è disponibile un solo pacchetto di pre-build ('in bottiglia') llvm
(senza clang++
). Oltre a ciò: il llvm
pacchetto è 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"
llvm
(3.9.1) nel homebrew-core
rubinetto ora include clang
, clang++
ecc sotto/usr/local/opt/llvm/bin
--with-toolchain
argomento di cui alcuni utenti potrebbero aver bisogno. Maggiori informazioni qui, embeddedartistry.com/blog/2017/2/20/installing-clangllvm-on-osx
--with-clang
argomento è stato rimosso.
brew install --with-toolchain llvm
come suggerisce @hangtwenty o è brew install llvm
sufficiente? Con l' --with-toolchain
opzione il pacchetto viene compilato - il che richiede molto tempo - rispetto alla semplice installazione di un pacchetto precompilato (in bottiglia / binario).
Devi installarlo con l' --with-clang
opzione:
$ 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 ++ .
--with-clang
? Lo sto chiedendo perché intendo chiamarlo in un ambiente di integrazione continua ...
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
/usr/local/include
cartella poiché la base include dir, quindi tutta la compilazione del software non riesce. Clang fornito da xcode non ha fsanitize=leak
e 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.
Ora è sufficiente eseguire:
brew install llvm
La bottiglia ora include clang
per impostazione predefinita.