Как включить 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 145

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 (

QMAKE_CXXFLAGS += -std=c++0x

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

затем на линии: QMAKE_CFLAGS += -ФНО-сохранить-рядные с атрибутом dllexport

изменить : QMAKE_CFLAGS += -ФНО-сохранить-рядные с атрибутом dllexport -с std=с++11

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