So aktivieren Sie C++11 in Eclipse Juno/Kepler/Luna CDT?
EDIT: Es stellt sich heraus, das ist nicht wirklich spezifisch für Eclipse Kepler. Ich hatte mit dem gleichen Verfahren für Eclipse Juno. Das problem war, dass es zu fehlen scheinen Schritte in anderen Beiträgen beantworten die gleiche Frage.
Ich verwende Eclipse Kepler für C++ und ich bin versucht zu verwenden, C++11 und Fehler erhalten. Beim kompilieren bekomme ich die Fehlermeldung
Fehler: range-based-for-Schleifen sind nicht erlaubt, in C++98-Modus
Ich habe den Anweisungen gefolgt vom post
Eclipse CDT C++11/C++0x support
und die Lösung für Eclipse Juno nicht funktioniert.
Verschiedenen Kommentare haben vorgeschlagen Neustarten von eclipse und die Reinigung und den Wiederaufbau. Das noch nie einen Unterschied gemacht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt zwei Dinge, die Sie haben zu tun, müssen Sie zuerst Ihre setup-compiler, dann müssen Sie setup-CDT die Sprache-Prozessor. Da Sie nicht erwähnen, welche compiler du verwendest, nehme ich an, dass es der GCC, aber die Schritte werden ähnlich für andere Compiler. (Beachten Sie, müssen Sie einen compiler unterstützt C++11 -, natürlich.)
Einrichten der compiler ist ziemlich einfach:
An diesem Punkt sollten Sie in der Lage sein, um Ihr Projekt neu erstellen und es zu laufen. Aber CDT kann Sie noch Fehler zeigen für C++11 beinhaltet. Hier ist, wie können Sie beheben, dass:
-std=c++11
in dem Sie sagte, zu legen, und baute den kompletten index zeigt immer noch einen Haufen unbekannter std::cout, std::set usw...compiler spec
, und funktioniert immer noch nicht. std::shared_ptr und nicht gleich erkannt. Obwohl es verwendet, um die Arbeit auf die ältere Maschine mit juno.C++11-Unterstützung in Eclipse Kepler Service Release 1 (Build id: 20130919-0819)
In der neuesten Version von Eclipse Kepler SR1 nur -std=c++11
Den " - Befehl zu bekommen compiler specs:"-Zeile sollte wie folgt Aussehen:
Als der CDT 8.3 (als Kepler update), es ist ein neuer Dialekt option im build-Einstellungen:
http://wiki.eclipse.org/CDT/User/NewIn83#Build
Ich benutze Eclipse Kepler und um es zu beheben ich Tat dies:
1 - der Rechten Maustaste Auf das Projekt >> Proprietes >> C/C++ Build :: Einstellungen
2 - Ging an GCC G++ - Compiler >> Sonstiges >> Andere Flaggen
Fest, dass mein problem!
Ich hoffe, es half!
Läuft eclipse indigo und cdt 8.0.2 hier. Ich habe alle die Führer, aber es war immer noch notwendig, um die Präprozessor-define von hand zu finden, die Dinge wie std::unique_ptr.
Die include-Datei "Speicher" prüft.
Satz __cplusplus zu 201103L auf die "Symbole" Registerkarte unter "Wege und Symbole" in "C++ General" in den Projekteigenschaften.
Hinzufügen Dialekt flag "-std=c++11" Projekt-Eigenschaften-> C/C++ Build -> Einstellungen -> Werkzeug-Einstellungen (GCC C++ Compiler -> Dialekt) mein problem gelöst in Eclipse Kepler, abgesehen von den Einstellungen oben angegeben.
Ich bin mit Eclipse Luna und es gibt kein "Tool-Einstellungen" unter C/C++ Build -> Einstellungen. Ich HAT add-std=c++11 compiler specs Befehlszeile unter "C/C++ General -> Präprozessor Gehört -> Provider" wie vorgeschlagen. Aber noch nicht befriedigen meine indexer-Fähigkeit zu beheben emplace().
Also schaute ich in die header Datei und festgestellt, dass die emplace-Funktionen abhängig sind, __cplusplus >= 201103L. So habe ich nur noch das Präprozessor-symbol "__cplusplus" und gab ihm den Wert 201103.
Bisschen hackish aber der indexer ist glücklich. (Und makefiles definieren meine build-flags, nicht das eclipse-Projekt)
Die Lösung von MrEricSir nur funktioniert, nachdem ich die neueste Eclipse-Sauerstoff-CDT installiert. Es funktioniert nicht für mich mit Mars CDT.