J'ai essayé
brew install llvm
mais après cela, je ne trouve pas de 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 pas de clang++*
exécutable sous /usr/local
.
D'où ma question : Comment obtenir clang++ via Homebrew ?
Nous recherchons des réponses longues qui fournissent des explications et un contexte. Ne vous contentez pas d'une réponse d'une ligne ; expliquez pourquoi votre réponse est correcte, idéalement en la citant. Les réponses qui n'incluent pas d'explications peuvent être supprimées.
@Tetsujin Je suis d'accord avec vous, mais c'est essentiellement une réponse complète. Elle décrit pleinement ce qui est nécessaire et pourquoi
À partir de 2018, le Le dépôt de versions Homebrew ('tap') est hors service .
Le paquetage Homebrew llvm n'inclut toujours pas clang/clang++, par défaut. Ainsi, il ne fait pas partie du paquetage préconstruit ('bottled').
On peut le construire via :
brew install --with-toolchain llvm
Et ensuite l'utiliser via 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
La construction induite prend beaucoup de temps et n'est donc pas adaptée à un environnement d'intégration continue (IC).
Cependant, le clang fourni avec le récent XCode (qui est disponible dans les environnements CI comme Travis-CI, la version 9 est la version par défaut, la 10 est également disponible) n'est plus aussi obsolète qu'il ne l'était (Apple utilise un schéma de version fantaisiste pour clang qui ne correspond pas aux numéros de version clang amont mais cmake détecte par exemple pour AppleClang 9.1.0.9020039 la version 4.0.1). Ainsi, il est suffisant de construire des logiciels C++11/C++14 avec des dépendances communes comme Boost (par exemple la version 1.67).
Le site llvm
dans Homebrew n'inclut 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
). Le supplément --with-clang
donne une compilation complète du paquet parce qu'il n'y a qu'un seul prebuild ('bottled') llvm
disponible (sans clang++
). En outre, le llvm
est relativement ancien - il contient actuellement llvm 3.6, alors que la version 3.7 est sortie il y a 6 mois.
Ainsi, pour obtenir une bouteille clang++
3.7 vous devez installer le paquet llvm à partir de 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"
Notez que si vous faites cela pour Emscripten, vous devez utiliser la version de clang qu'ils fournissent.
Le dernier Homebrew llvm
(3.9.1) dans le homebrew-core
Le robinet comprend maintenant clang
, clang++
etc. sous /usr/local/opt/llvm/bin
Complément au commentaire de @ssdecontrol : il existe une --with-toolchain
argument maintenant que certains utilisateurs pourraient avoir besoin. Plus d'informations ici, embeddedartistry.com/blog/2017/2/20/installing-clangllvm-on-osx
Malheureusement, le binaire clang de homebrew est cassé. Il n'inclut pas /usr/local/include
comme répertoire d'inclusion de base, ce qui fait que la construction de tous les logiciels échoue. Clang fourni par xcode ne dispose pas de fsanitize=leak
y ccc-analyzer
. Donc les deux clangs sur mac os sont cassés. Vous devez le construire avec toutes les fonctionnalités activées à partir des sources. Mais la compilation va tuer votre CI comme travis. Vous devez donc héberger et maintenir un CI séparé uniquement pour Apple. Apple n'est bon que pour le développement simple, tout le reste demande de la peine.
Vous devez l'installer avec --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++ .
Est-il encore possible d'obtenir un paquet binaire préconstruit (c'est-à-dire une "bouteille") ? Je veux dire que lorsque l'on spécifie --with-clang
? Je demande parce que j'ai l'intention d'appeler cela dans un environnement d'intégration continue ...
LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.