Jak włączyć C++11 w Eclipse Juno / Kepler / Luna CDT?

EDIT: okazuje się, że to nie jest specyficzne dla Eclipse Kepler. Musiałem użyć tego samego procesu dla Eclipse Juno. Problem polegał na tym, że w innych postach brakuje kroków odpowiadających na to samo pytanie.

Używam Eclipse Kepler dla C++ i próbuję używać C++11 i dostaję błędy. Podczas kompilacji dostaję błąd

Error: range-based-for loops are not allowed in C++98 mode

Zastosowałem się do instrukcji z posta

Eclipse CDT Obsługa C++11/C++0x

A rozwiązanie podane dla Eclipse Juno nie działa.

Różne komentarze sugerują ponowne uruchomienie eclipse, czyszczenie i przebudowę. To bez różnicy.

8 answers

Są dwie rzeczy, które musisz zrobić, najpierw musisz skonfigurować kompilator, a następnie skonfigurować procesor języka CDT. Ponieważ nie wspomniałeś, którego kompilatora używasz, zakładam, że jest to GCC, ale kroki będą podobne dla innych kompilatorów. (Zauważ, że potrzebujesz kompilatora, który obsługuje C++11, oczywiście.)

Konfiguracja kompilatora jest dość prosta:

  1. Kliknij prawym przyciskiem myszy projekt i kliknij Właściwości
  2. Pod C / C++ Build kliknij Ustawienia
  3. pod kompilatorem GCC C++ kliknij różne
  4. w polu Other Flags dodaj "- std = c++11 " do listy tokenów.
  5. Kliknij Zastosuj i OK

W tym momencie powinieneś być w stanie odbudować swój projekt i uruchomić go. Ale CDT nadal może wykazywać błędy dla C++11 includes. Oto jak możesz to rozwiązać:

  1. Kliknij prawym przyciskiem myszy projekt i kliknij Właściwości
  2. W C / C++ ogólne kliknij "preprocesor zawiera ścieżki, Makra "
  3. Wybierz zakładkę dostawcy
  4. na liście powinien znajdować się element, który mówi coś w stylu "GCC Built in Compiler Settings". Wybierz ten wpis.
  5. odznacz opcję " Użyj globalnego dostawcy..."opcja
  6. pod listą znajduje się pole z napisem " Command to get compiler specs."Append" - std= c++0x " to this.
  7. Przenieś" GCC Built In Compiler Settings "u góry listy za pomocą przycisku" Przenieś w górę " po prawej stronie.
  8. Kliknij Zastosuj, a następnie OK.
  9. wróć do obszaru roboczego Eclipse, wybierz Menu Project, C / C++ Index, i kliknij " Re-resolve unsolved includes."
 179
Author: MrEricSir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-10 20:25:47

Obsługa C++11 W Eclipse Kepler Service Release 1 (Build id: 20130919-0819)

W najnowszym wydaniu Eclipse Kepler SR1 wystarczy dodać - std=c++11

  1. Kliknij prawym przyciskiem myszy projekt i kliknij właściwości
  2. przejdź do C/C++ ogólnei preprocesor zawiera ścieżki, makra itp.
  3. wybierz zakładkę dostawcy
  4. dodaj - std=c++11 do Komendy get compiler Specyfikacja:
  5. Zastosuj zmiany, indeks powinien zostać wygenerowany automatycznie.

"polecenie do pobrania specyfikacji kompilatora:" - linia powinna wyglądać następująco:

${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11
 25
Author: MeJ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-20 16:27:30

Od wersji CDT 8.3 (dostępne jako aktualizacja Keplera), w Ustawieniach kompilacji dostępna jest nowa opcja dialektu:

Http://wiki.eclipse.org/CDT/User/NewIn83#Build

 13
Author: Tobu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-18 13:05:29

Używam Eclipse Kepler i aby to naprawić zrobiłem tak:

1-Kliknij prawym przyciskiem myszy projekt > > Proprietes > > C / C++ Build:: Settings

2-poszedł do kompilatora GCC G++ > > różne > > inne flagi

 i then added -std=c++11 
 hit apply and ok
To naprawiło mój problem! Mam nadzieję, że pomogło!
 6
Author: LandKingdom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-27 00:14:24

Uruchamianie eclipse indigo i cdt 8.0.2 tutaj. Podążałem za wszystkimi przewodnikami, ale nadal konieczne było ręczne ustawienie preprocesora define, aby znaleźć rzeczy takie jak std:: unique_ptr. Plik include "memory" sprawdza to. Ustaw _ _ cplusplus na 201103l na karcie "symbole" w zakładce "ścieżki i symbole "w" C++ ogólne " we właściwościach projektu.

 4
Author: David Karla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-07 18:05:17

Dodanie flagi dialekt "- std=c++11 " do Właściwości projektu - > C / C++ Build - > Settings - > Tool settings (GCC C++ Compiler - > Dialect) rozwiązało mój problem w Eclipse Kepler, poza ustawieniami podanymi powyżej.

 2
Author: mluthra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-02 23:31:49

Używam Eclipse Luna i nie ma "Tool Settings" Pod C / C++ Build -> Settings. I DID add-std=c++11 to the compiler specs command line under "C/C++ General -> Preprocessor Includes -> Providers" as suggested. Ale to i tak nie zaspokoiło możliwości mojego indeksatora do rozwiązania emplace().

Więc spojrzałem w pliku nagłówkowym dla i okazało się, że funkcje emplace są zależne od _ _ cplusplus >= 201103l. więc po prostu dodał symbol preprocesora "_ _ cplusplus " i dał to wartość 201103.

Trochę hakerski, ale indeksujący jest szczęśliwy. (I pliki Makefile definiują moje flagi budowania, a nie projekt eclipse)

 1
Author: Miles F. Bintz II,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-04 17:41:24

Rozwiązanie Dostarczone przez MrEricSir działa tylko po zainstalowaniu najnowszego Eclipse Oxygen CDT. Nie działa mi z MARS CDT.

 0
Author: user164969,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-06 23:17:40