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?
fonte
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?
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) nahomebrew-core
torneira agora incluiclang
,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:Então, você encontrará
clang++
em / usr / local / opt / llvm / bin / clang ++ .fonte
--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:
Eu compilei com
fonte
/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 possuifsanitize=leak
eccc-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:
A garrafa agora inclui
clang
por padrão.fonte