Como instalar sonido metálico reciente ++ con Homebrew?

20

He intentado

brew install llvm

pero después de eso no puedo encontrar ninguna clang++*bajo ejecutable /usr/local.

Por lo tanto mi pregunta: ¿Cómo obtener sonido metálico ++ a través de Homebrew?

maxschlepzig
fuente

Respuestas:

18

A partir de 2018, las versiones Homebrew repositorio ( 'grifo') está fuera de servicio .

El paquete de la llvm Homebrew todavía no incluye sonido metálico / ruido metálico ++, por defecto. Por lo tanto, no es parte de la pre-compilados ( 'botella') paquete.

Se puede construir a través de:

brew install --with-toolchain llvm

Y luego úsalo por ejemplo:

$ PATH="/usr/local/opt/llvm/bin:$PATH" \
    LDFLAGS='-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib' \
    cmake ...

Pero esta --with-toolchainacumulación inducida lleva mucho tiempo y es por tanto inadecuada en un entorno de integración continua (CI).

Sin embargo, el sonido metálico que viene con XCode reciente (que está disponible en entornos CI como Travis-CI, la Versión 9 es la predeterminada, 10 disponible también) ya no está tan desactualizado como solía estarlo (Apple usa un esquema de versión de fantasía para el ruido metálico que no coincide con los números de versión clang aguas arriba pero cmake detecta por ejemplo, para AppleClang 9.1.0.9020039 la versión 4.0.1). Por lo tanto, es suficiente para construir software C ++ 11 / C ++ 14 con dependencias comunes como Boost (por ejemplo la versión 1.67).

2016 estado del arte

El llvmpaquete en Homebrew no incluye clang++, por defecto. Al instalarlo, debe agregarlo --with-clanga la línea de comando (por ejemplo brew install --with-clang llvm). El extra de --with-clanglos rendimientos de una compilación paquete completo, porque sólo hay una prebuild ( 'botella') llvmpaquete disponible (sin clang++). Además de eso: el llvmpaquete es relativamente antigua - Actualmente tiene llvm 3.6 - 3.7, donde fue lanzado hace 6 meses.

Por lo tanto, para conseguir una botella clang++de 3,7 tiene que instalar el paquete llvm de versiones Homebrew :

$ brew tap homebrew/versions
$ brew install llvm37

Luego está disponible en:

/usr/local/bin/clang++-3.7

La fórmula también señala:

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"
maxschlepzig
fuente
Tenga en cuenta que si está haciendo esto para emscripten, usted tiene que utilizar la versión ruido metálico que proporcionan.
Claudiu
77
La última Homebrew llvm(3.9.1) en el homebrew-coregrifo ahora incluye clang, clang++, etc., bajo/usr/local/opt/llvm/bin
shadowtalker
1
Complemento para un comentario de @ ssdecontrol: hay un --with-toolchainargumento ahora que algunos usuarios podrían necesitar. Más información aquí, embeddedartistry.com/blog/2017/2/20/installing-clangllvm-on-osx
driftcatcher
Shadowtalker tiene razón, y desde entonces, el --with-clangargumento ha sido eliminado.
MCCCS
@shadowtalker, ¿tengo que ejecutar brew install --with-toolchain llvmcomo @hangtwenty sugiere o es brew install llvmsuficiente? Con la --with-toolchainopción del paquete se compila - que es mucho tiempo - en comparación con sólo la instalación de un paquete precompilado (embotellada / binario).
maxschlepzig
4

Tienes que instalarlo con --with-clang opción:

$ 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

Luego, encontrará clang++en / usr / local / opt / llvm / bin / clang ++ .

jherran
fuente
1
Hm, ¿es posible todavía conseguir un paquete binario pre-construidos (es decir, una 'botella')? Quiero decir al especificar --with-clang? Me pregunto porque tengo la intención de llamar a que en un entorno de integración continua ...
maxschlepzig
Si existe, yo sé abajo sobre él, pero no creo que exista.
jherran
1
En realidad, hay una versión embotellada disponible a través de versiones Homebrew. Ver también mi respuesta.
maxschlepzig
3

El --con-ruido metálico y opciones --with-cadena de herramientas ya no funcionan. Esto funcionó para mí:

brew install llvm
cd /Library/Developer/CommandLineTools/Packages/
open .
run the installer

Compilé con

CC=/usr/local/cellar/llvm/7.0.1/bin/clang CCX=/usr/local/cellar/llvm/7.0.1/bin/clang++ make
Dweezahr
fuente
1
Lamentablemente, el sonido binario homebrew está roto. No incluye la /usr/local/includecarpeta como base incluye el directorio, por lo que falla la construcción de todo el software. Clang proporcionado por xcode no tiene fsanitize=leaky ccc-analyzer. Así que ambos clangs en mac os están rotos. Tienes que construirlo con todas las funciones habilitadas desde la fuente. Pero la compilación matará tu CI como travis. Por lo tanto, debe hospedar y mantener un CI separado solo para apple. Apple es bueno solo para un desarrollo simple, cualquier otra cosa requiere dolor.
puchu
3

Ahora es suficiente para ejecutar:

brew install llvm

La botella ahora incluye clangpor defecto.

wieczorek1990
fuente
Estamos buscando respuestas largas que brinden alguna explicación y contexto. No solo dé una respuesta de una línea; explica por qué tu respuesta es correcta, idealmente con citas. Las respuestas que no incluyen explicaciones pueden eliminarse.
Tetsujin
@Tetsujin Estoy de acuerdo contigo, pero esta es esencialmente una respuesta completa. Describe completamente lo que se necesita y por qué
Lars Nielsen