Sie müssen zwei Dinge tun: Zuerst müssen Sie Ihren Compiler einrichten, dann müssen Sie den Sprachprozessor von CDT einrichten. Da Sie nicht erwähnt haben, welchen Compiler Sie verwenden, gehe ich davon aus, dass es sich um GCC handelt, aber die Schritte sind für andere Compiler ähnlich. (Beachten Sie, dass Sie natürlich einen Compiler benötigen, der C ++ 11 unterstützt.)
Das Einrichten des Compilers ist ziemlich einfach:
- Klicken Sie mit der rechten Maustaste auf Ihr Projekt und klicken Sie auf Eigenschaften
- Klicken Sie unter C / C ++ Build auf Einstellungen
- Klicken Sie unter GCC C ++ Compiler auf Verschiedenes
- Fügen Sie im Feld Andere Flags "-std = c ++ 11" an die Liste der Token an.
- Klicken Sie auf Übernehmen und auf OK
Zu diesem Zeitpunkt sollten Sie in der Lage sein, Ihr Projekt neu zu erstellen und zum Laufen zu bringen. CDT zeigt jedoch möglicherweise weiterhin Fehler für C ++ 11-Includes an. So können Sie das beheben:
- Klicken Sie mit der rechten Maustaste auf Ihr Projekt und klicken Sie auf Eigenschaften
- Klicken Sie unter C / C ++ General auf "Preprozessor Include Paths, Macros".
- Wählen Sie die Registerkarte Anbieter
- Die Liste sollte ein Element enthalten, das etwa "GCC Built in Compiler Settings" enthält. Wählen Sie diesen Eintrag.
- Deaktivieren Sie die Option "Globalen Anbieter verwenden ..."
- Unter der Liste befindet sich ein Feld mit der Aufschrift "Befehl zum Abrufen der Compilerspezifikationen". Fügen Sie "-std = c ++ 0x" hinzu.
- Verschieben Sie den Anbieter "GCC Built in Compiler Settings" oben in der Liste mit der Schaltfläche "Nach oben" auf der rechten Seite.
- Klicken Sie auf Übernehmen und dann auf OK.
- Wählen Sie in Ihrem Eclipse-Arbeitsbereich das Projektmenü C / C ++ - Index aus und klicken Sie auf "Nicht aufgelöste Includes erneut auflösen".
-std=c++11
dort eingegeben, wo Sie gesagt haben, und den vollständigen Index neu erstellt. Es wird immer noch eine Menge nicht erkannter std :: cout, std :: set usw.compiler spec
und funktioniert immer noch nicht. std :: shared_ptr und dasselbe nicht erkannt. Obwohl es früher auf der älteren Maschine mit juno funktioniert hat.C ++ 11-Unterstützung in Eclipse Kepler Service Release 1 (Build-ID: 20130919-0819)
In der neuesten Version von Eclipse Kepler SR1 müssen Sie nur -std = c ++ 11 hinzufügen
Die Zeile "Befehl zum Abrufen der Compilerspezifikationen:" sollte folgendermaßen aussehen:
quelle
Ab CDT 8.3 ( als Kepler-Update verfügbar ) gibt es eine neue Dialektoption in den Build-Einstellungen:
http://wiki.eclipse.org/CDT/User/NewIn83#Build
quelle
Ich benutze Eclipse Kepler und um das Problem zu beheben, habe ich Folgendes getan:
1 - Klicken Sie mit der rechten Maustaste auf das Projekt >> Eigenschaften >> C / C ++ Build :: Einstellungen
2 - Ging zum GCC G ++ Compiler >> Verschiedenes >> Andere Flags
Das hat mein Problem behoben!
Ich hoffe es hat geholfen!
quelle
Hier läuft Eclipse Indigo und CDT 8.0.2. Ich habe alle Anleitungen befolgt, aber es war immer noch notwendig, den Präprozessor von Hand zu definieren, um Dinge wie std :: unique_ptr zu finden. Die Include-Datei "Speicher" überprüft dies. Setzen Sie __cplusplus auf 201103L auf der Registerkarte "Symbole" unter "Pfade und Symbole" in "C ++ Allgemein" in den Projekteigenschaften.
quelle
Das Hinzufügen des Dialektflags "-std = c ++ 11" zu den Projekteigenschaften-> C / C ++ Build -> Einstellungen -> Werkzeugeinstellungen (GCC C ++ - Compiler -> Dialekt) löste mein Problem in Eclipse Kepler, abgesehen von den oben angegebenen Einstellungen.
quelle
Ich verwende Eclipse Luna und es gibt keine "Werkzeugeinstellungen" unter C / C ++ Build -> Einstellungen. I DID add -std = c ++ 11 an der Befehlszeile specs Compiler unter "C / C ++ Allgemein -> Preprocessor Inklusive -> Provider" , wie vorgeschlagen. Aber das befriedigte immer noch nicht die Fähigkeit meines Indexers, emplace () aufzulösen.
Also habe ich in der Header-Datei nachgesehen und festgestellt, dass die Emplace-Funktionen von __cplusplus> = 201103L abhängig sind. Also habe ich gerade das Präprozessorsymbol "__cplusplus" hinzugefügt und ihm den Wert 201103 gegeben.
Ein bisschen hackisch, aber der Indexer ist glücklich. (Und Makefiles definieren meine Build-Flags, nicht das Eclipse-Projekt)
quelle
Die von MrEricSir bereitgestellte Lösung funktioniert erst, nachdem das neueste Eclipse Oxygen CDT installiert wurde. Bei Mars CDT funktioniert das nicht.
quelle