2012-04-06 12 views
8

Ho installato clang e llvm dal sorgente e sto cercando di compilare un codice C++ utilizzando le funzionalità del nuovo standard.Inclusione di intestazioni C++ 11 con Clang/LLVM

Ho trovato che mentre per esempio l'uso di per intervalli, ad es. for (i : vector) funziona correttamente, ho problemi (impossibile trovare il file di intestazione) quando ho bisogno di importare un'intestazione, ad es. <unordered_set> o <tuple>.

Devo usare la nuova libC++ per usare queste intestazioni, o c'è solo una semplice modifica di build che devo fare? Al momento ho appena costruito clang e llvm in una cartella nella mia home directory e sto chiamando clang ++ da lì.

risposta

4

Mentre la libreria standard viene fornito con le distribuzioni del vostro compilatore, quando si sta costruendo da soli, è ancora necessario per costruire la libreria standard stesso. Alcuni dei suoi componenti potrebbero essere solo di intestazione, ma non tutti lo sono.

Quindi è necessario scaricare almeno la libreria, se non è stata creata. Clang può usare libstdC++ di GCC, ma hanno anche il loro progetto libC++.

11

Vedere http://clang.llvm.org/get_started.html.

Se si intende lavorare con il supporto Clang C++, potrebbe essere necessario dirgli come trovare le intestazioni di libreria standard C++. Se Clang non riesce a trovare il sistema libstdC++ intestazioni, si prega di seguire le seguenti istruzioni:

  • gcc -v -x C++/dev/null -fsyntax solo per ottenere il percorso.

  • Cercare il commento "FIXME: mod temporanea: percorsi hard-coded" in clang/lib/frontend/InitHeaderSearch.cpp e modificare le linee di seguito per includere tale percorso.

+0

Ok ma sembra solo un problema con le intestazioni del nuovo standard. – zenna

+0

ah ah, il che potrebbe essere dovuto al fatto che il mio g ++ 4.6 si trova in un luogo non standard – zenna