¿Cómo instalar clang ++ reciente con Homebrew?

20

Lo he intentado

brew install llvm

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

Por lo tanto, mi pregunta: ¿Cómo obtener clang ++ a través de Homebrew?

    
pregunta maxschlepzig 11.02.2016 - 08:58

2 respuestas

17

A partir de 2018, el repositorio de Versiones de Homebrew ('tap') está fuera de servicio .

El paquete original de Homebrew llvm aún no incluye clang / clang ++, por defecto. Por lo tanto, no es parte del paquete precompilado ('embotellado').

Uno puede construirlo a través de:

brew install --with-toolchain llvm

Y luego úsalo a través de, 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 construcción inducida --with-toolchain lleva mucho tiempo y, por lo tanto, no es adecuada en un entorno de integración continua (CI).

Sin embargo, el clang que viene con XCode reciente (que está disponible en entornos CI como Travis-CI, Versión 9 es el predeterminado, 10 disponibles, también) ya no está tan desactualizado como solía ser (Apple usa un Esquema de versión de fantasía para el Clang que no coincide con los números de versión de Clang ascendente, pero CMake detecta, por ejemplo, para AppleClang 9.1.0.9020039 la versión 4.0.1). Por lo tanto, es suficiente compilar software C ++ 11 / C ++ 14 con dependencias comunes como Boost (por ejemplo, la versión 1.67).

Estado de la técnica 2016

El paquete llvm en Homebrew no incluye clang++ , por defecto. Al instalarlo, debe agregar --with-clang a la línea de comando (por ejemplo, brew install --with-clang llvm ). El --with-clang adicional produce una compilación del paquete completo porque solo hay un paquete llvm prebuild ('bottled') disponible (sin clang++ ). Además de eso, el paquete llvm es relativamente antiguo, actualmente tiene llvm 3.6, donde se lanzó 3.7 hace 6 meses.

Por lo tanto, para obtener un clang++ 3.7 embotellado, debe instalar el paquete llvm desde Versiones Homebrew :

$ brew tap homebrew/versions
$ brew install llvm37

Entonces está disponible bajo:

/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"
    
respondido por el maxschlepzig 13.02.2016 - 10:47
3

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

$ 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
                                    
respondido por el jherran 11.02.2016 - 14:32

Lea otras preguntas en las etiquetas