compile - llvm clang for windows
¿Qué necesita instalar para usar Clang en Windows para construir c++ 14 para 64 bit? (3)
Intente instalar MSYS2 y luego instale el paquete mingw-w64-x86_64-clang (binary):
pacman -S mingw-w64-x86_64-clang
Es un poco viejo en este momento (3.6.2), pero podría ser lo suficientemente bueno para ti. Luego, cuando ejecuta el shell Win64 proporcionado por MSYS2, clang
estará en su camino.
Si no es lo suficientemente bueno, recientemente he estado creando una versión de 64 bits de clang con MSYS2 y utilizándola para compilar ejecutables de Windows nativos de 64 bits. Mi proceso fue algo así como:
- Utilice pacman para instalar base-devel, mingw-w64-x86_64-ninja, mingw-x86_64-cmake y quizás algunos otros paquetes que necesite el proceso de compilación.
- Coge mi script PKGBUILD para clang y los archivos en el mismo directorio . Esto se basa en el mingw-w64-clang-svn de MSYS2, que en gran medida es obra de Martell Malone. Puede encontrarlo en el canal MSYS2 IRC y preguntarle más al respecto.
- En un Win64, shell, vaya al directorio con mi PKGDUILD, ejecute
export MINGW_INSTALLS=mingw64
(por lo que solo está compilando la versión de 64 bits), y luego ejecutemakepkg-mingw
.
Es poco probable que obtenga todo correctamente en el primer intento, y es posible que algunos archivos deban editarse. Clang puede haber cambiado desde la última vez que hice esto y algunos parches pueden no aplicarse limpiamente.
ACTUALIZAR:
Escribí un tutorial detallado que incorpora las dos respuestas principales a esta pregunta: http://blog.johannesmp.com/2015/09/01/installing-clang-on-windows-pt1/
TL; DR
En Windows, dado el siguiente programa:
#include <iostream>
int main()
{
int arr[] = {1, 2, 3, 4, 5};
for(auto el : arr)
{
std::cout << el << std::endl;
}
return 0;
}
Quiero ser capaz de hacer lo siguiente:
clang++ hello.cpp -o hello.exe -std=c++14
Y obtenga un ejecutable de 64 bits que simplemente funciona . No quiero tener que agregar una tonelada de -I
incluye decir clang dónde encontrar iostream
u otros encabezados estándar de C ++; No quiero tener que vincular en varios pasos.
No me importa tanto el rendimiento, la eficiencia, qué enlazador se usa, etc. Solo quiero poder configurar clang / gcc / lo que sea para que pueda usar un comando de consola simple, rápido y sucio como el de arriba
¿Qué necesito instalar para que funcione ?
El problema
Como usuario predominante de mac / linux, estoy acostumbrado a poder usar un administrador de paquetes para instalar la última versión de clang, que simplemente funciona .
Ahora estoy tratando de configurar el compilador clang / gnu en Windows y parece ser mucho más difícil, aunque solo sea porque hay poca o ninguna documentación directa (que he podido encontrar)
Intenté seguir este tutorial: https://yongweiwu.wordpress.com/2014/12/24/installing-clang-3-5-for-windows , y pude usarlo para obtener clang para compilar y vincular (usando gcc 4.8.2), pero los binarios resultantes fueron de 32 bits.
Intenté instalar los últimos binarios pregrabados de clang ( 3.6.2 ) y la versión de 64 bits de mingw-w64 ( 4.9.3 para 64 bits con posix y sjlj para excepciones ), y estoy recibiendo:
hello.cpp:1:10: fatal error: ''iostream'' file not found
#include <iostream>
^
1 error generated.
Lo que parece indicar que clang no está viendo los archivos de gcc. Parece que algunas versiones de LLVM / clang están buscando solo ciertas versiones de gcc, pero eso no parece estar documentado en ninguna parte.
De manera similar, ¿alguien me mencionó en el IRC de LLVM que necesita modificar el controlador de clang para buscar gcc en ciertas rutas?
Lo que estoy buscando
Estoy de acuerdo con la creación de LLVM / Clang desde el origen si es necesario, pero realmente solo estoy buscando instrucciones claras paso a paso que me permitan usar clang++
tan fácilmente como lo hago con mac / linux
Algo como:
- Cree
this version
de LLVM / Clang y colóquela enthat directory
- Descargue e instale
this version
de cygwin (o mingw32 o mingw-w64) e instalethese packages
. - etc.
Puede instalar llvm pre-release binary para Windows here . MinGW-w64 se puede descargar here . Por supuesto, debe asegurarse de que las rutas estén configuradas correctamente.
Para la última versión de clang, eg, clang 6.0.0
. La solución anterior por @ user5271266 no será suficiente. Ahora el objetivo predeterminado para clang Windows es x86_64-pc-windows-msvc
( x86_64-pc-windows-msvc
que está utilizando Windows de 64 bits).
Para compilar archivos fuente C ++, de acuerdo con lo here , debemos cambiar el objetivo:
clang++ -target x86_64-pc-windows-gnu -std=c++14 test.cc -o test.exe
si usas el siguiente clang 3.7.0, simplemente configura PATH para incluir bin de mingw-w64, clang funcionará como esperas