Przede wszystkim śledziłem "Getting Started: Building and Running Clang". W szczególności zbudowałem go zgodnie z sekcją "Korzystanie z Visual Studio". Innymi słowy, mam zbudowany jest przy użyciu programu Visual Studio 2010.Clang na Windows
Po drugie, mam to i ręcznie ustawić ścieżki do dystrybucji MinGW Biblioteka:
Prosty Program Próbuję skompilować:
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}
pojawia się następujący zwrotne od kompilatora:
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.
Oczywistym pytaniem jest - dlaczego to rozumiem?
Dodatkowo chciałbym poznać więcej szczegółów, a ponieważ strona Clang zapewnia bardzo krótką informację - Myślałam, że ktoś mógłby wyjaśnić mi się następujące pytania:
- O ile mi zrozumieć Clang nie mieć własną bibliotekę standardową (stdC++ chyba, prawda?). Właśnie dlatego muszę korzystać z nagłówków i bibliotek MinGW - czy mam rację?
- Jaka jest różnica między budowaniem Clanga a Visual Studio i MinGW?
- Czy muszę kodować ścieżkami w ścieżce
clang/lib/Frontend/InitHeaderSearch.cpp
, czy mogę je pominąć, a raczej określić te ścieżki później za pomocą opcji "-I", tak jak to robię na powyższym zrzucie ekranu?
Kombinacja, którą udało mi się wykonać w przeszłości, polega na zmodyfikowaniu pliku InitHeaderSearch.cpp w celu włączenia ścieżki do moich folderów zawierających MinGW, a następnie do kompilacji za pomocą łańcucha narzędziowego MinGW.Byłem również w stanie zbudować używając toolchain Visual C++, ale nie byłem w stanie dowiedzieć się, jak skompilować kompilator do korzystania z nagłówków i bibliotek z instalacji MinGW (nagłówki biblioteki Visual C++ C++ Standard nie mogą być używane, ponieważ opierają się w dużej mierze na specyficznych funkcjach Visual C++). –
Tak, dokładnie o tym myślałem. Ale największym myleniem dla mnie jest to, jak budowanie z Visual C++ lub MinGW jest związane z włączaniem i ścieżkami biblioteki używanymi podczas używania kompilatora Clang. Innymi słowy, muszę mieć możliwość swobodnego wyboru tych ścieżek po skompilowaniu Clanga. Dlaczego, u licha, te ścieżki zależą od kompilatora, którego użyłem do zbudowania Clanga? –
@JamesMcNellis: Clang powinien być w stanie obecnie parsować nagłówki VC++. Jedynym problematycznym obszarem analizowania jest MFC IIRC. – rubenvb