Заголовки Clang и C++11
Я пытаюсь заставить Clang работать на Windows, чтобы в конечном итоге разработать с Qt Creator, чтобы увидеть, является ли это жизнеспособной альтернативой Visual Studio.
я получил LLVM и Clang 3.2 (SVN Revision 163238) для компиляции с помощью MinGW w64 (mingw-w64-bin_i686-mingw_20111220.zip), а также указал на каталоги заголовков c++ gcc, добавив AddMinGWCPlusPlusIncludePaths("D:/Code/mingw/lib/gcc", "x86_64-w64-mingw32", "4.7.0");
to clang/lib/Frontend/InitHeaderSearch.cpp
, хотя я думаю, что это может быть не самый современный метод. В любом случае, Clang, кажется, находит большинство из них заголовки.
однако при компиляции простого Hello World:
#include <iostream>
int main(int argc, char* argv[])
{
std::cout << "testn";
return 0;
}
используя clang++ main.cpp
Я получаю эту ошибку:
In file included from main.cpp:1:
In file included from D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++iostream:39:
In file included from D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++ostream:39:
In file included from D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++ios:39:
In file included from D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++iosfwd:41:
In file included from D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++postypes.h:41:
D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++cwchar:45:10: fatal error:
'wchar.h' file not found
Итак, Clang, по-видимому, находит несколько заголовков c++, включая iostream
но не удается найти wchar.h
. Оказывается, что wchar.h
находится в .../include/c++tr1
где Clang не ищет его. Перемещение этих заголовков TR1 в один каталог также не помогает.
что я здесь сделал не так? Является ли библиотека gcc C++ несовместимой с Clang, так как по-видимому, он все еще не интегрировал некоторые библиотеки TR1 в стандарт? Где я могу получить совместимую библиотеку C++11 для Clang (для Windows!)?
4 ответов
вы неверно/лязг mispatched. Вам также нужно добавить пути MinGW-w64, где-то там, где вы добавили свою версию.
используйте встроенную версию, которую я предоставляю с объяснением здесь: лязгом на Windows
Я изменил Clang для работы с заголовками MinGW-w64 и заголовками и библиотеками GCC 4.6.3 libstdc++. В настоящее время он застрял в версии 3.2, но если вы примените аналогичный патч к источникам (из которых у меня, к сожалению, нет файла патча) вы должны уметь им пользоваться.
тот, который я предоставляю, просто извлекает, добавляет в путь и использует. И только 32-разрядная.
также обратите внимание, что вы используете древнюю версию MinGW-w64 GCC, и вы действительно должны обновить это.
попробуйте загрузить "wchar.h " вручную и размещение его в локальном рабочем каталоге проекта visual studio. Мне это подходит.
если вы передадите -nostdinc++
для clang вы должны иметь возможность указать его на точную конфигурацию включает с несколькими -I
переключатели. Попробуй!--3--> как хорошо.
и -v
должен показать вам, где и в каком порядке он ищет заголовки, когда он компилирует:
clang++ -v -nostdinc++ -ID:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++ -ID:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++/tr1 foo.cpp
Я столкнулся с той же проблемой, используя Clang --version 3.4 (198054) и mingw-get.exe -- version 0.6.2-beta-20131004-1: оказалось, что я неправильно установил MinGW: сначала я только установил флажок "mingw-gcc-g++" в mingw-get.диалог выбора пакета exe, добавив "mingw32-base" позже решил этот wchar_t.h проблема: clang++.exe-std=c++11 скомпилированный код C++11 iostream просто отлично.