En primer lugar, he seguido "Getting Started: Building and Running Clang". En particular, lo he construido de acuerdo con la sección "Uso de Visual Studio". En otras palabras, he construido usando Visual Studio 2010.Clang en Windows
En segundo lugar, he de forma manual y sistema incluye rutas de biblioteca a la distribución MinGW:
El sencillo programa que estoy tratando de compilar:
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}
me sale el siguiente retroalimentación del compilador:
In file included from C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\iostream:39:
In file included from C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\ostream:39:
In file included from C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\ios:38:
In file included from C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\iosfwd:41:
In file included from C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\bits/postypes.h:41:
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:144:11: error: no member named 'fgetws' in the global namespace
using ::fgetws;
~~^
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:146:11: error: no member named 'fputws' in the global namespace
using ::fputws;
~~^
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:150:11: error: no member named 'getwc' in the global namespace
using ::getwc;
~~^
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:151:11: error: no member named 'getwchar' in the global namespace
using ::getwchar;
~~^
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:156:11: error: no member named 'putwc' in the global namespace
using ::putwc;
~~^
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:157:11: error: no member named 'putwchar' in the global namespace
using ::putwchar;
~~^
6 errors generated.
Build error occurred, build is stopped
Time consumed: 646 ms.
La pregunta obvia es: ¿por qué obtengo esto?
Además, me gustaría conocer más detalles, y desde entonces, el sitio web Sonido metálico proporciona extremadamente breve información - pensé que alguien podría aclarar las siguientes preguntas a mí:
- Por lo que yo entiendo Clang no lo hace tiene su propia biblioteca estándar (stdC++, supongo, ¿no?). Es por eso que tengo que usar los encabezados y las bibliotecas de MinGW, ¿estoy en lo cierto?
- ¿Cuál es la diferencia entre la construcción de Clang con Visual Studio y MinGW?
- ¿Tengo que incluir las rutas de acceso de código duro en
clang/lib/Frontend/InitHeaderSearch.cpp
o puedo omitirlas y especificar las rutas más adelante mediante la opción "-I" como hago en la captura de pantalla anterior?
La combinación que he tenido que trabajar en el pasado es modificar InitHeaderSearch.cpp para incluir la ruta a mis carpetas de inclusión MinGW y luego compilar con la cadena de herramientas MinGW.También he podido construir utilizando la cadena de herramientas de Visual C++, pero no pude averiguar cómo hacer que el compilador incorporado utilice los encabezados y las bibliotecas desde la instalación de MinGW (los encabezados de la Biblioteca estándar de C++ de Visual C++ no pueden ser utilizado porque confían extensamente en características específicas de Visual C++). –
Sí, eso es exactamente en lo que estaba pensando. Pero la mayor confusión para mí es cómo la construcción con Visual C++ o MinGW se relaciona con las rutas de inclusión y biblioteca utilizadas durante la utilización del compilador Clang. En otras palabras, tengo que poder elegir libremente estos caminos después de haber compilado Clang. ¿Por qué demonios estas rutas dependerían del compilador que utilicé para construir Clang? –
@JamesMcNellis: Clang debería ser capaz de analizar los encabezados de VC++ actualmente. El único área problemática de análisis es MFC IIRC. – rubenvb