Я использую CentOS 6.6 x64 с Eclipse Luna и g ++ 4.7.2 (предоставлено devtoolset-2). Я использую встроенную в Eclipse автоматическую генерацию Makefile.
Я включил g ++ 4.7.2 с помощью scl enable devtoolset-2 bash
[me @ dev ~] # g ++ — версия
g ++ (GCC) 4.7.2 20121015 (Red Hat 4.7.2-5)
Copyright (C) 2012 Free Software Foundation, Inc.
Это бесплатное программное обеспечение; см. источник для условий копирования. Здесь нет
гарантия; даже не для ИЗДЕЛИИ или ФИТНЕСА ДЛЯ ОСОБЕННОЙ ЦЕЛИ.
К сожалению, при компиляции Eclipse выдает ошибки, говоря, что «-std = c ++ 11» не является допустимым вариантом. Я установил диалект в свойствах проекта >> Сборка C / C ++ >> Настройки >> Диалект >> «Другие флаги диалекта» со значением «-std = c ++ 11».
Вызов: GCC C ++ Compiler make: *** Ожидание незавершенных работ ….
g ++ -std = c ++ 11 …. cc1plus: ошибка: нераспознанный параметр командной строки
«-Std = C ++ 11»
Я пытался использовать опцию «Стандарт языка» с «-std = c ++ 0x», но он выдает ошибки при компиляции
map<int, MyObject*> myObjectMap;
// assume I've added in objects before the loop
for (const auto& kv : myObjectMap) // line 249
{
// do things
}
249: ошибка: ожидаемый инициализатор до токена ‘:’
Если вы хотите, чтобы Eclipse работал с установленным devtoolset-2
вам нужно запустить Eclipse из среды, которая имеет devtoolset
включен. Очевидно, это можно сделать из терминала с
scl enable devtoolset-2 eclipse &
Объяснить: devtoolset
устанавливается в качестве альтернативной среды разработки, которая не активен по умолчанию. Только при явной активации вы получите новую версию компилятора, которая понимает -std=c++11
и функции, которые вы искали.