Как включить С++ 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
Эффекты немедленны!:)