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