Как включить С++ 11 в Qt Creator?

Название довольно самоописательно. Я загрузил Qt Creator 2.7.0, и я пытаюсь скомпилировать базовый код С++ 11:

int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
  x *= 2;
}

Я получаю следующую ошибку:

range based for loops are not allowed in c++ 98 mode

Однако, согласно этой статье, эта версия Qt Creator поддерживает С++ 11. Итак, как мне включить его?

Ответ 1

В соответствии с этот сайт добавьте

CONFIG += c++11

в ваш .pro файл (см. внизу этой веб-страницы). Требуется Qt 5.


Другие ответы, предлагающие

QMAKE_CXXFLAGS += -std=c++11 (или QMAKE_CXXFLAGS += -std=c++0x)

также работает с Qt 4.8 и gcc/clang.

Ответ 2

Добавьте это в свой .pro файл

QMAKE_CXXFLAGS += -std=c++11

или

CONFIG += c++11

Ответ 3

В качестве альтернативы для обработки обоих случаев, рассмотренных в превосходном ответе Али, я обычно добавляю

# With C++11 support
greaterThan(QT_MAJOR_VERSION, 4){    
CONFIG += c++11
} else {
QMAKE_CXXFLAGS += -std=c++0x
}

к моим файлам проекта. Это может быть удобно, когда вам не очень-то нравится, какая версия Qt используется людьми в вашей команде, но вы хотите, чтобы в любом случае они включали С++ 11.

Ответ 4

добавить в файл qmake

QMAKE_CXXFLAGS+= -std=c++11
QMAKE_LFLAGS +=  -std=c++11

Ответ 5

Если вы используете более раннюю версию QT (< 5), попробуйте это

QMAKE_CXXFLAGS += -std=c++0x

Ответ 6

Единственное место, в котором я успешно работаю, - это поиск в ... \Qt\{5,9; или вашей версии}\mingw {53_32; или ваша версия}\mkspecs\win32-g++\qmake.conf:

Тогда на линии: QMAKE_CFLAGS + = -fno-keep-inline-dllexport

Изменить: QMAKE_CFLAGS + = -fno-keep-inline-dllexport -std = С++ 11

Эффекты немедленны!:)