Trước hết, tôi đã theo dõi "Getting Started: Building and Running Clang". Đặc biệt, tôi đã xây dựng nó theo phần "Sử dụng Visual Studio". Nói cách khác, tôi đã xây dựng nó sử dụng Visual Studio 2010.Clang trên Windows
Thứ hai, tôi đã tự đặt bao gồm đường dẫn và thư viện để phân phối MinGW:
Chương trình đơn giản, tôi đang cố gắng để biên dịch:
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}
tôi nhận được thông tin phản hồi sau từ trình biên dịch:
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.
Câu hỏi hiển nhiên là - tại sao tôi nhận được điều này?
Ngoài ra, tôi muốn biết thêm chi tiết, và từ đó, trang web Clang cung cấp thông tin cực kỳ ngắn ngủi - Tôi nghĩ rằng ai đó có thể làm sáng tỏ những câu hỏi sau đây với tôi:
- Theo như tôi hiểu Clang không có thư viện chuẩn của riêng nó (stdC++ tôi đoán, phải không?). Đó là lý do tại sao tôi phải sử dụng các tiêu đề và thư viện của MinGW - tôi có đúng không?
- Sự khác biệt giữa xây dựng Clang với Visual Studio và MinGW là gì?
- Tôi có phải mã cứng bao gồm các đường dẫn trong
clang/lib/Frontend/InitHeaderSearch.cpp
hoặc tôi có thể bỏ qua và thay vào đó chỉ định các đường dẫn sau đó thông qua tùy chọn "-I" như tôi làm trong ảnh chụp màn hình ở trên?
Sự kết hợp tôi đã nhận được để làm việc trong quá khứ là sửa đổi InitHeaderSearch.cpp để bao gồm đường dẫn đến MinGW của tôi bao gồm các thư mục và sau đó để xây dựng với chuỗi công cụ MinGW.Tôi cũng đã có thể xây dựng bằng cách sử dụng Visual C++ toolchain, nhưng tôi đã không thể tìm ra cách để có được trình biên dịch được xây dựng để sử dụng các tiêu đề và thư viện từ cài đặt MinGW (Visual C++ C++ tiêu đề thư viện tiêu chuẩn không thể được sử dụng vì chúng dựa nhiều vào Visual C++ - các tính năng cụ thể). –
Vâng đó chính xác là những gì tôi đang nghĩ đến. Nhưng sự nhầm lẫn lớn nhất đối với tôi là cách xây dựng với Visual C++ hoặc MinGW liên quan đến các đường dẫn thư viện và bao gồm được sử dụng trong quá trình sử dụng trình biên dịch Clang. Nói cách khác, tôi có thể tự do lựa chọn những con đường này sau khi biên dịch Clang. Tại sao các đường dẫn này lại phụ thuộc vào trình biên dịch mà tôi đã sử dụng để xây dựng Clang? –
@JamesMcNellis: Clang sẽ có thể phân tích cú pháp tiêu đề VC++ hiện tại. Khu vực phân tích cú pháp có vấn đề duy nhất là MFC IIRC. – rubenvb