próbowałem
brew install llvm
ale po tym nie mogę znaleźć żadnego clang++*
pliku wykonywalnego /usr/local
.
Zatem moje pytanie: jak zdobyć clang ++ przez Homebrew?
próbowałem
brew install llvm
ale po tym nie mogę znaleźć żadnego clang++*
pliku wykonywalnego /usr/local
.
Zatem moje pytanie: jak zdobyć clang ++ przez Homebrew?
Odpowiedzi:
Od 2018 r. Repozytorium wersji Homebrew („dotknij”) nie działa .
Standardowy pakiet Homebrew llvm nadal nie zawiera clang / clang ++. W związku z tym nie jest częścią wstępnie zbudowanego („butelkowanego”) pakietu.
Można go zbudować poprzez:
brew install --with-toolchain llvm
A następnie użyj go np .:
$ PATH="/usr/local/opt/llvm/bin:$PATH" \
LDFLAGS='-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib' \
cmake ...
Ale ta --with-toolchain
indukowana kompilacja zajmuje bardzo dużo czasu i dlatego nie nadaje się w środowisku ciągłej integracji (CI).
Jednak clang, który jest dostarczany z najnowszym XCode (który jest dostępny w środowiskach CI, takich jak Travis-CI, wersja 9 jest domyślna, 10 również dostępne) nie jest już tak przestarzały, jak kiedyś (Apple stosuje schemat wersji fantasy dla clang, który nie pasuje do wcześniejszych numerów wersji clang, ale cmake wykrywa np. dla AppleClang 9.1.0.9020039 wersja 4.0.1). Wystarczy zatem zbudować oprogramowanie C ++ 11 / C ++ 14 z typowymi zależnościami, takimi jak Boost (np. Wersja 1.67).
llvm
Pakiet w Homebrew nie zawiera clang++
domyślnie. Podczas instalacji musisz dodać --with-clang
do wiersza poleceń (np brew install --with-clang llvm
.). Dodatek --with-clang
daje kompilację pełnego pakietu, ponieważ dostępny jest tylko jeden pakiet prebuild („butelkowany”) llvm
(bez clang++
). Ponadto: llvm
pakiet jest stosunkowo stary - obecnie ma lvvm 3.6 - gdzie wersja 3.7 została wydana 6 miesięcy temu.
Tak więc, aby uzyskać butelkowaną wersję clang++
3.7, musisz zainstalować pakiet llvm z wersji Homebrew :
$ brew tap homebrew/versions
$ brew install llvm37
Jest on następnie dostępny pod:
/usr/local/bin/clang++-3.7
Formuła zauważa również:
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) w homebrew-core
kranu zawiera teraz clang
, clang++
itp pod/usr/local/opt/llvm/bin
--with-toolchain
argument, którego niektórzy użytkownicy mogą potrzebować. Więcej informacji tutaj, embeddedartistry.com/blog/2017/2/20/installing-clangllvm-on-osx
--with-clang
argument został usunięty.
brew install --with-toolchain llvm
ponieważ @ hangtwenty sugeruje lub jest brew install llvm
wystarczające? Dzięki tej --with-toolchain
opcji pakiet jest kompilowany - co jest bardzo czasochłonne - w porównaniu do zwykłej instalacji pakietu (butelkowanego / binarnego).
Musisz go zainstalować z --with-clang
opcją:
$ 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
Następnie znajdziesz clang++
na / usr / local / opt / llvm / bin / clang ++ .
--with-clang
? Pytam, ponieważ zamierzam to nazwać w środowisku ciągłej integracji ...
Opcje --with-clang i --with-toolchain już nie działają. To działało dla mnie:
brew install llvm
cd /Library/Developer/CommandLineTools/Packages/
open .
run the installer
Kompilowałem się z
CC=/usr/local/cellar/llvm/7.0.1/bin/clang CCX=/usr/local/cellar/llvm/7.0.1/bin/clang++ make
/usr/local/include
folderów, ponieważ baza zawiera katalog, więc kompilacja oprogramowania kończy się niepowodzeniem. Clang dostarczony przez xcode nie ma fsanitize=leak
i ccc-analyzer
. Więc oba kliknięcia w Mac OS są zepsute. Musisz go zbudować z włączonymi wszystkimi funkcjami ze źródła. Ale kompilacja zabije Twój CI jak Travis. Więc musisz hostować i utrzymywać osobne CI tylko dla Apple. Jabłko nadaje się tylko do prostego rozwoju, wszystko inne wymaga bólu.
Teraz wystarczy uruchomić:
brew install llvm
Butelka zawiera teraz clang
domyślnie.