vscode visual studio run program mundo how hola create compile compilar code c++ mingw eclipse-cdt codeblocks clang

c++ - visual - Conseguir Clang para trabajar en Windows



visual studio code create c++ project (7)

Clang tiene ubicaciones de búsqueda codificadas, tal como se define en el archivo clang/lib/Frontend/InitHeaderSearch.cpp , cerca del comentario FIXME: temporary hack: hard-coded paths .

Hay una nota al respecto en esta página: http://clang.llvm.org/get_started.html

Así que obtenga las rutas de inclusión de su otro compilador (MingW), y codifíquelas en Clang, y podría funcionar. (No estoy seguro de si el soporte de Windows de Clang todavía está al 100%)

He seguido la siguiente guía paso a paso y he logrado, después de un poco de manipulación, obtener clang para compilar usando code: blocks y MinGW. Genial, entonces ahora podría agregar el módulo Clang para eclipsar (¿por qué tener un IDE cuando puede tener cuatro?) Y comenzar a compilar.

Puedo compilar un programa simple que no usa la biblioteca estándar, pero desafortunadamente cuando intento compilar esto:

#include <iostream> using namespace std; int main() { cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!! return 0; }

antes que nada, entiendo esto:

.. / src / test.cpp: 9: 10: error fatal: archivo ''iostream'' no encontrado

entonces agrego los encabezados de Mingw a la ruta de inclusión; entonces entiendo esto:

''error fatal: archivo'' bits / c ++ config.h ''no encontrado''

que es extraño. ¿Por qué funciona MingW si ese archivo no está en ''bits /''? ¿Está integrado en el compilador? No importa, encuentro una implementación y creo el archivo en ''bits /''.

Luego recibo toda una tormenta de errores, incluidos los extraños que parecen sugerir que el clang no implementa correctamente el preprocesador o mi comprensión del preprocesador es incorrecta.

C:/Program Files/CodeBlocks/MinGW/lib/gcc/mingw32/4.4.1/include/c++/cwchar:45:26: error: expected value in expression #if _GLIBCXX_HAVE_WCHAR_H

y muchos más como eso. ¿Debería ser eso?

#if defined(_GLIBCXX_HAVE_WCHAR_H)

o

#ifdef _GLIBCXX_HAVE_WCHAR_H?

Si lo son, las bibliotecas estándar de MinGW son incorrectas.

Supongo que soy incorrecto al asumir que el clang se puede agregar para reemplazar gcc y que no está diseñado para funcionar con las bibliotecas estándar de gnu. ¡Cualquier confirmación o negación de esto, respaldada con evidencia sería bienvenida!

Entonces, ¿alguien tiene una manera infalible de obtener clang compilando en una PC con Windows? Hay una escasez de información en línea sobre clang y especialmente con respecto a las ventanas.

Tengo muchas ganas de que clang y LLVM funcionen, ya que suenan muy bien por lo que he leído. Cualquier ayuda sería apreciada.

Gracias.


Cuando tuve el mismo problema, configuré Code Blocks en los directorios de inclusión correctos para mi configuración. Y usa -I con clang ++ y todo ha estado funcionando bien hasta ahora.


Dependiendo de su versión de MinGW (y por lo tanto de la versión de gcc portada), los encabezados pueden estar dispersos un poco ...

En el archivo clang/lib/Frontend/InitHeaderSearch.cpp encontrará una cantidad de rutas codificadas. El problema es que cada versión es específica de la versión, así que si su versión de MinGW no está allí, entonces siéntase libre de agregarla (y solicite que se integre en la línea principal de Clang publicando el parche en cfe-commit).

Personalmente, lo ejecuto en MinGW / msys con solo problemas menores (varios casos de prueba fallan porque mi shell msys modifica la entrada cuando hay : en ...), aunque no he intentado usarlo desde CodeBlocks (estoy acostumbrado) a la línea de comando).

Si desea ayudar, Takumi está pendiente de la integración de MinGW, Francois Pichet lidera el trabajo de compatibilidad con encabezados de VC ++ / MFC (es decir, es el principal colaborador) y @rubenvb está actualmente tratando de @rubenvb parches en libc ++ para que funcione en Windows (libc ++ aún no compila en Windows). Las 3 áreas son bastante independientes y requieren diferentes habilidades y conocimientos.


Hay algunas instrucciones para clang en esta página (oculta en la parte "Desarrollo de Clang" de la barra lateral ...). Para MinGW, desea la sección llamada "En sistemas tipo Unix". La única parte difícil es el paso 5 que le indica cómo configurar las rutas para la biblioteca estándar de C ++. Estos deben agregarse al código en clang/lib/Frontend/InitHeaderSearch.cpp . En mi máquina, terminó pareciéndose a esto

// FIXME: temporary hack: hard-coded paths. AddPath("/usr/local/include", System, true, false, false); AddPath("c:/msysgit/mingw/bin/../lib/gcc/mingw32/4.4.0/include/c++", System, true, false, false); AddPath("c:/msysgit/mingw/bin/../lib/gcc/mingw32/4.4.0/include/c++/mingw32", System, true, false, false); AddPath("c:/msysgit/mingw/bin/../lib/gcc/mingw32/4.4.0/include/c++/backward", System, true, false, false); AddPath("c:/msysgit/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../include", System, true, false, false); AddPath("c:/msysgit/mingw/bin/../lib/gcc/mingw32/4.4.0/include", System, true, false, false); AddPath("c:/msysgit/mingw/bin/../lib/gcc/mingw32/4.4.0/include-fixed", System, true, false, false);

¡aunque no estoy seguro de que se necesiten todos!


Tengo el mismo error con Fedora Linux. La solución sugerida era obtener una versión posterior de Clang (estaba usando 2.8) o incluso compilarla desde el tronco. No lo he probado.


Tuve un problema similar. Utilicé los análogos de GCC 4.7 de los caminos especificados por la respuesta de Mike Dinsdale y los especifiqué con el indicador ''-isistema'' (Clang 3.2 en la distribución de mingw64 tal como fue construido por rubenvb) a todas mis llamadas futuras al ejecutable clang (a través de guiones). Como estos directorios se están especificando explícitamente como directorios de inclusión del sistema , todas las advertencias potencialmente fatigosas generadas por ellos se suprimen automáticamente.

tl; dr: el indicador -isystem especifica los directorios de inclusión del sistema sin recompilación en Clang


Windows 10 / VS 2017 / Clang 4.0.0 falta stdlib.h en el código C. Así es como lo resolví:

  • Abra el x86_x64 Cross Tools Command Prompt for VS 2015/2016/2017 . Ejecutar clang aquí debería eliminar el error "falta de encabezados".
  • Si aún no funciona, le faltan los encabezados y / o libs reales, ya que Clang deja estos detalles de la plataforma a VS o MinGW. Vaya a /Program Files (x86)/Windows Kits/10/Include/ y busque sus subdirectorios (si corresponde) para stdlib.h y co. Si no lo encuentra, necesitará instalar el último Windows 10 SDK yendo a Visual Studio (instalador) y haciendo clic en Modificar para agregar paquetes.