2012-04-06 21 views
8

He instalado clang y llvm desde el origen, y estoy tratando de compilar algunos códigos C++ utilizando las características del nuevo estándar.Incluyendo encabezados C++ 11 con Clang/LLVM

He encontrado que, por ejemplo, el uso de rangos, por ejemplo for (i : vector) funciona bien, tengo problemas (no puedo encontrar el archivo de encabezado) cuando necesito importar un encabezado, p. <unordered_set> o <tuple>.

¿Necesito usar la nueva libC++ para usar estos encabezados, o solo necesito hacer un simple cambio de compilación? Por el momento acabo de crear clang y llvm en una carpeta en mi directorio personal, y estoy llamando a clang ++ desde allí.

Respuesta

4

Mientras que la biblioteca estándar viene con las distribuciones de su compilador, cuando estás construcción de uno mismo, que todavía tienen que construir la propia biblioteca estándar. Algunos de sus componentes pueden ser solo de encabezado, pero no todos son.

Así que es necesario que al menos descargue la biblioteca, si no la compila. Clang puede usar la libstdC++ de GCC, pero también tienen su proyecto libC++.

11

Ver http://clang.llvm.org/get_started.html.

Si desea trabajar con Clang C++, es posible que deba indicarle cómo encontrar los encabezados de biblioteca estándar de C++. Si Clang no puede encontrar su sistema libstdC++ cabeceras, por favor, siga estas instrucciones:

  • gcc -v -x C++/dev/null -fsyntax sólo para obtener la ruta.

  • Busca el comentario "ARREGLAME: corte temporal: rutas rígida" en sonido metálico/lib/frontend/InitHeaderSearch.cpp y cambiar las líneas de abajo para incluir ese camino.

+0

Ok, pero parece ser un problema con los encabezados del nuevo estándar. – zenna

+0

ah ha, que puede ser porque mi g ++ 4.6 está en un lugar no estándar – zenna