J'ai essayé
brew install llvm
mais après cela, je ne trouve aucun clang++*
exécutable sous /usr/local
.
D'où ma question: comment obtenir clang ++ via Homebrew?
J'ai essayé
brew install llvm
mais après cela, je ne trouve aucun clang++*
exécutable sous /usr/local
.
D'où ma question: comment obtenir clang ++ via Homebrew?
Réponses:
Depuis 2018, le référentiel des versions Homebrew ('tap') est hors service .
Le package stock Homebrew llvm n'inclut toujours pas clang / clang ++, par défaut. Ainsi, il ne fait pas partie du package prédéfini («en bouteille»).
On peut le construire via:
brew install --with-toolchain llvm
Et puis utilisez-le par exemple:
$ PATH="/usr/local/opt/llvm/bin:$PATH" \
LDFLAGS='-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib' \
cmake ...
Mais cette --with-toolchain
construction induite prend beaucoup de temps et n'est donc pas adaptée dans un environnement d'intégration continue (CI).
Cependant, le bruit qui vient avec le XCode récent (qui est disponible dans les environnements CI comme Travis-CI, la version 9 est la valeur par défaut, 10 également disponible) n'est plus aussi obsolète qu'auparavant (Apple utilise un schéma de version fantastique pour clang qui ne correspond pas aux numéros de version de clang en amont mais cmake détecte par exemple pour AppleClang 9.1.0.9020039 la version 4.0.1). Ainsi, il suffit de construire un logiciel C ++ 11 / C ++ 14 avec des dépendances communes comme Boost (par exemple la version 1.67).
Le llvm
package dans Homebrew ne comprend pas clang++
, par défaut. Lors de son installation, vous devez ajouter --with-clang
à la ligne de commande (par exemple brew install --with-clang llvm
). L'extra --with-clang
donne une compilation complète du package car il n'y a qu'un seul package de pré-construction («en bouteille») llvm
disponible (sans clang++
). En plus de cela: le llvm
package est relativement ancien - il a actuellement llvm 3.6 - où 3.7 est sorti il y a 6 mois.
Ainsi, pour obtenir une version clang++
3.7 en bouteille, vous devez installer le package llvm à partir des versions Homebrew :
$ brew tap homebrew/versions
$ brew install llvm37
Il est ensuite disponible sous:
/usr/local/bin/clang++-3.7
La formule note également:
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) dans le homebrew-core
robinet comprend maintenant clang
, clang++
etc. sous/usr/local/opt/llvm/bin
--with-toolchain
maintenant un argument dont certains utilisateurs pourraient avoir besoin. Plus d'informations ici, embeddedartistry.com/blog/2017/2/20/installing-clangllvm-on-osx
--with-clang
argument a été supprimé.
brew install --with-toolchain llvm
comme @hangtwenty suggère ou est brew install llvm
suffisant? Avec l' --with-toolchain
option, le package est compilé - ce qui prend beaucoup de temps - par rapport à l'installation d'un package prédéfini (en bouteille / binaire).
Vous devez l'installer avec l' --with-clang
option:
$ 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
Ensuite, vous trouverez clang++
sur / usr / local / opt / llvm / bin / clang ++ .
--with-clang
? Je demande parce que j'ai l'intention d'appeler cela dans un environnement d'intégration continue ...
Les options --with-clang et --with-toolchain ne fonctionnent plus. Cela a fonctionné pour moi:
brew install llvm
cd /Library/Developer/CommandLineTools/Packages/
open .
run the installer
J'ai compilé avec
CC=/usr/local/cellar/llvm/7.0.1/bin/clang CCX=/usr/local/cellar/llvm/7.0.1/bin/clang++ make
/usr/local/include
dossier comme répertoire d' inclusion de base, donc toute construction logicielle échoue. Clang fourni par xcode n'a pas fsanitize=leak
et ccc-analyzer
. Donc, les deux coups sur mac os sont brisés. Vous devez le construire avec toutes les fonctionnalités activées à partir de la source. Mais la compilation tuera votre CI comme travis. Vous devez donc héberger et maintenir un CI séparé uniquement pour Apple. Apple n'est bon que pour un développement simple, tout le reste nécessite de la peine.
Maintenant, il suffit de courir:
brew install llvm
La bouteille comprend désormais clang
par défaut.