eu tentei
brew install llvm
mas depois disso não consigo encontrar nenhum clang++*
executável abaixo /usr/local
.
Assim, a minha pergunta: Como obter clang ++ via Homebrew?
eu tentei
brew install llvm
mas depois disso não consigo encontrar nenhum clang++*
executável abaixo /usr/local
.
Assim, a minha pergunta: Como obter clang ++ via Homebrew?
Respostas:
A partir de 2018, o repositório Homebrew Versions ('tap') está fora de serviço .
O pacote padrão Homebrew llvm ainda não inclui clang / clang ++, por padrão. Portanto, não faz parte do pacote pré-construído ('engarrafado').
Pode-se construir através de:
brew install --with-toolchain llvm
E depois use-o por exemplo:
$ PATH="/usr/local/opt/llvm/bin:$PATH" \
LDFLAGS='-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib' \
cmake ...
Mas essa --with-toolchain
compilação induzida leva muito tempo e, portanto, é inadequada em um ambiente de integração contínua (IC).
No entanto, o clang que acompanha o XCode recente (que está disponível em ambientes de CI como Travis-CI, Versão 9 é o padrão, 10 disponíveis também) não está mais desatualizado como costumava ser (a Apple usa um esquema de versão de fantasia para clang que não corresponde aos números de versão upstream, mas cmake detecta, por exemplo, para AppleClang 9.1.0.9020039 a versão 4.0.1). Portanto, é suficiente compilar o software C ++ 11 / C ++ 14 com dependências comuns como o Boost (por exemplo, versão 1.67).
O llvm
pacote no Homebrew não inclui clang++
, por padrão. Ao instalá-lo, você deve adicionar --with-clang
à linha de comando (por exemplo brew install --with-clang llvm
). O extra --with-clang
gera uma compilação completa do pacote, porque há apenas um pacote de pré-compilação ('engarrafado') llvm
disponível (sem clang++
). Além disso: o llvm
pacote é relativamente antigo - atualmente possui o llvm 3.6 - onde o 3.7 foi lançado há 6 meses.
Portanto, para obter um clang++
3.7 engarrafado, é necessário instalar o pacote llvm nas versões Homebrew :
$ brew tap homebrew/versions
$ brew install llvm37
Está então disponível em:
/usr/local/bin/clang++-3.7
A fórmula também observa:
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) na homebrew-core
torneira agora inclui clang
, clang++
etc. sob/usr/local/opt/llvm/bin
--with-toolchain
argumento agora que alguns usuários podem precisar. Mais informações aqui, embeddedartistry.com/blog/2017/2/20/installing-clangllvm-on-osx
--with-clang
argumento foi removido.
brew install --with-toolchain llvm
como @hangtwenty está sugerindo ou é brew install llvm
suficiente? Com a --with-toolchain
opção, o pacote é compilado - o que consome muito tempo - em comparação com apenas a instalação de um pacote pré-construído (engarrafado / binário).
Você precisa instalá-lo com a --with-clang
opção:
$ 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
Então, você encontrará clang++
em / usr / local / opt / llvm / bin / clang ++ .
--with-clang
? Estou perguntando porque eu pretendo chamar isso em um ambiente de integração contínua ...
As opções --with-clang e --with-toolchain não funcionam mais. Isso funcionou para mim:
brew install llvm
cd /Library/Developer/CommandLineTools/Packages/
open .
run the installer
Eu compilei com
CC=/usr/local/cellar/llvm/7.0.1/bin/clang CCX=/usr/local/cellar/llvm/7.0.1/bin/clang++ make
/usr/local/include
pasta como dir de inclusão básica, portanto, toda a criação do software falha. O clang fornecido pelo xcode não possui fsanitize=leak
e ccc-analyzer
. Portanto, os dois clangs no mac os estão quebrados. Você precisa construí-lo com todos os recursos ativados da fonte. Mas a compilação matará seu IC como travis. Portanto, você deve hospedar e manter o IC separado apenas para a apple. Apple é bom apenas para o desenvolvimento simples, qualquer outra coisa requer dor.
Agora basta executar:
brew install llvm
A garrafa agora inclui clang
por padrão.