ich habe es versucht
brew install llvm
aber danach kann ich keine clang++*
ausführbare Datei unter finden /usr/local
.
Also meine Frage: Wie bekomme ich Clang ++ über Homebrew?
ich habe es versucht
brew install llvm
aber danach kann ich keine clang++*
ausführbare Datei unter finden /usr/local
.
Also meine Frage: Wie bekomme ich Clang ++ über Homebrew?
Antworten:
Ab 2018 ist das Homebrew Versions-Repository ('tap') außer Betrieb .
Das Standardpaket von Homebrew llvm enthält standardmäßig noch kein clang / clang ++. Daher ist es nicht Teil des vorgefertigten Pakets ("abgefüllt").
Man kann es bauen über:
brew install --with-toolchain llvm
Und dann benutze es zB über:
$ PATH="/usr/local/opt/llvm/bin:$PATH" \
LDFLAGS='-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib' \
cmake ...
Dieser --with-toolchain
induzierte Build dauert jedoch sehr lange und ist daher in einer Umgebung mit kontinuierlicher Integration (Continuous Integration, CI) ungeeignet.
Der Clang, der mit dem aktuellen XCode (der in CI-Umgebungen wie Travis-CI, Version 9, verfügbar ist, und auch in Version 10) geliefert wird, ist jedoch nicht mehr so veraltet wie früher (Apple verwendet ein Fantasy-Versionsschema) für clang, das nicht mit den Versionsnummern des Upstream-Clangs übereinstimmt, aber cmake erkennt z. B. für AppleClang 9.1.0.9020039 die Version 4.0.1). Es reicht also aus, C ++ 11 / C ++ 14-Software mit gängigen Abhängigkeiten wie Boost (z. B. Version 1.67) zu erstellen.
Das llvm
Paket in Homebrew enthält clang++
standardmäßig nicht. Bei der Installation müssen Sie --with-clang
der Kommandozeile hinzufügen (zB brew install --with-clang llvm
). Das Extra --with-clang
ergibt eine vollständige Paketkompilierung, da nur ein vorgefertigtes ('abgefülltes') llvm
Paket verfügbar ist (ohne clang++
). Hinzu kommt, dass das llvm
Paket relativ alt ist - derzeit hat es llvm 3.6 -, wo 3.7 vor 6 Monaten veröffentlicht wurde.
Um einen abgefüllten clang++
3.7 zu erhalten, müssen Sie das llvm-Paket von Homebrew-Versionen installieren :
$ brew tap homebrew/versions
$ brew install llvm37
Es ist dann verfügbar unter:
/usr/local/bin/clang++-3.7
In der Formel wird außerdem Folgendes angegeben:
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) in dem homebrew-core
Wasserhahn enthält jetzt clang
, clang++
usw. unter/usr/local/opt/llvm/bin
--with-toolchain
Einige Benutzer benötigen möglicherweise ein Argument. Weitere Informationen hier, embeddedartistry.com/blog/2017/2/20/installing-clangllvm-on-osx
--with-clang
Argument entfernt.
brew install --with-toolchain llvm
wie @hangtwenty vorschlägt oder brew install llvm
ausreicht? Mit der --with-toolchain
Option wird das Paket kompiliert - was im Vergleich zur Installation eines vorgefertigten (abgefüllten / binären) Pakets sehr zeitaufwendig ist.
Sie müssen es mit der --with-clang
Option installieren :
$ 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
Dann finden Sie clang++
auf / usr / local / opt / llvm / bin / Klirren ++ .
--with-clang
? Ich
Die Optionen --with-clang und --with-toolchain funktionieren nicht mehr. Das hat bei mir funktioniert:
brew install llvm
cd /Library/Developer/CommandLineTools/Packages/
open .
run the installer
Ich habe mit kompiliert
CC=/usr/local/cellar/llvm/7.0.1/bin/clang CCX=/usr/local/cellar/llvm/7.0.1/bin/clang++ make
/usr/local/include
Ordner als Basis-Include-Verzeichnis, sodass alle Software-Builds fehlschlagen. Clang zur Verfügung gestellt von Xcode nicht haben fsanitize=leak
und ccc-analyzer
. Also sind beide Klänge auf dem Mac OS kaputt. Sie müssen es mit allen Funktionen aus dem Quellcode erstellen. Aber die Zusammenstellung wird Ihr CI wie Travis töten. Sie müssen also separate CIs nur für Apple hosten und verwalten. Apple ist nur für die einfache Entwicklung gut, alles andere erfordert Schmerzen.
Jetzt reicht es zu rennen:
brew install llvm
Die Flasche enthält jetzt clang
standardmäßig.