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:
- Kliknij prawym przyciskiem myszy projekt i kliknij Właściwości
- Pod C / C++ Build kliknij Ustawienia
- pod kompilatorem GCC C++ kliknij różne
- w polu Other Flags dodaj "- std = c++11 " do listy tokenów.
- 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ć:
- Kliknij prawym przyciskiem myszy projekt i kliknij Właściwości
- W C / C++ ogólne kliknij "preprocesor zawiera ścieżki, Makra "
- Wybierz zakładkę dostawcy
- na liście powinien znajdować się element, który mówi coś w stylu "GCC Built in Compiler Settings". Wybierz ten wpis.
- odznacz opcję " Użyj globalnego dostawcy..."opcja
- pod listą znajduje się pole z napisem " Command to get compiler specs."Append" - std= c++0x " to this.
- Przenieś" GCC Built In Compiler Settings "u góry listy za pomocą przycisku" Przenieś w górę " po prawej stronie.
- Kliknij Zastosuj, a następnie OK.
- wróć do obszaru roboczego Eclipse, wybierz Menu Project, C / C++ Index, i kliknij " Re-resolve unsolved includes."
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
- Kliknij prawym przyciskiem myszy projekt i kliknij właściwości
- przejdź do C/C++ ogólnei preprocesor zawiera ścieżki, makra itp.
- wybierz zakładkę dostawcy
- dodaj - std=c++11 do Komendy get compiler Specyfikacja:
- 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
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:
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!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.
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.
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)
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.
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