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

Название довольно информативно. Я скачал Qt Creator 2.7.0 и пытаюсь скомпилировать базовый код C++ 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 поддерживает C++ 11. Так как мне это включить?

6 ответов

Решение

По данным этого сайта добавить

CONFIG += c++11

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


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

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

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

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

QMAKE_CXXFLAGS += -std=c++11

или же

CONFIG += c++11

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

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

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

Добавить в свой файл qmake

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

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

QMAKE_CXXFLAGS += -std=c++0x

Единственное место, где я успешно сделал это, это поиск в:

... \ Qt \ {5,9; или ваша версия}\mingw{53_32; или ваша версия}\mkspecs\win32-g++\qmake.conf:

Тогда на линии:

QMAKE_CFLAGS           += -fno-keep-inline-dllexport

Редактировать:

QMAKE_CFLAGS           += -fno-keep-inline-dllexport -std=c++11
Другие вопросы по тегам