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?
quelle
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?
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 demhomebrew-core
Wasserhahn enthält jetztclang
,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 oderbrew 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 :Dann finden Sie
clang++
auf / usr / local / opt / llvm / bin / Klirren ++ .quelle
--with-clang
? IchDie Optionen --with-clang und --with-toolchain funktionieren nicht mehr. Das hat bei mir funktioniert:
Ich habe mit kompiliert
quelle
/usr/local/include
Ordner als Basis-Include-Verzeichnis, sodass alle Software-Builds fehlschlagen. Clang zur Verfügung gestellt von Xcode nicht habenfsanitize=leak
undccc-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:
Die Flasche enthält jetzt
clang
standardmäßig.quelle