Einschließlich C ++ 11 Header mit Clang / LLVM

8

Ich habe clang und llvm von der Quelle installiert und versuche, C ++ - Code mit Funktionen des neuen Standards zu kompilieren.

Ich habe herausgefunden, dass zum Beispiel die Verwendung von Bereichen, z.B. for (i : vector) funktioniert gut, ich habe Probleme (kann Header-Datei nicht finden), wenn ich einen Header z. <unordered_set> oder <tuple> .

Muss ich die neue libc ++ verwenden, um diese Header zu verwenden, oder gibt es nur eine einfache Build-Änderung, die ich vornehmen muss? Im Moment habe ich gerade call und llvm in einen Ordner in meinem Home-Verzeichnis erstellt und rufe von dort callg ++ an.

    
zenna 06.04.2012, 18:00
quelle

2 Antworten

4

Während die Standardbibliothek mit Distributionen Ihres Compilers ausgeliefert wird, müssen Sie beim Erstellen selbst die Standardbibliothek selbst erstellen. Einige seiner Komponenten sind möglicherweise nur im Header, aber nicht alle.

Sie müssen also zumindest die Bibliothek herunterladen, wenn sie nicht erstellt wird. Clang kann GCCs libstdc ++ verwenden, aber sie haben auch ihr libc ++ - Projekt.

    
Nicol Bolas 06.04.2012, 18:06
quelle
11

Siehe Ссылка .

  

Wenn Sie vorhaben, an der Clang C ++ - Unterstützung zu arbeiten, müssen Sie ihm möglicherweise mitteilen, wie Sie die Header Ihrer C ++ - Standardbibliothek finden. Wenn Clang Ihre system libstdc ++ - Header nicht finden kann, folgen Sie bitte diesen Anweisungen:

     
  • gcc -v -x c ++ / dev / null -fsyntax-only um den Pfad zu erhalten.

  •   
  • Suchen Sie den Kommentar "FIXME: temporärer Hack: fest codierte Pfade" in clang / lib / Frontend / InitHeaderSearch.cpp und ändern Sie die Zeilen darunter um diesen Pfad einzuschließen.

  •   
    
Johannes Schaub - litb 06.04.2012 18:05
quelle

Tags und Links