Когда я компилирую проект под Qt Creator 2.8 / Qt5.1 с VS 2010 все нормально. Если я делаю то же самое с MinGW, я получаю следующую ошибку.
error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
Я понимаю, что мне нужно включить C + 11, но у меня есть CONFIG += console c++11
в моем .pro файле. Разве это не то, что нужно? Что я делаю неправильно?
Когда я смотрю на марку, я вижу:
CXXFLAGS = -pipe -fno-keep-inline-dllexport -g -std=c++0x
Смущает, как я говорю с ++ 11 в файле Pro.
qmake
и т.д., с нуля, без результатаПроверено:
Нашел решение, но может принять его только через некоторое время: https://stackoverflow.com/a/19530028/356726
Хорошо, благодаря вашим подсказкам я понял это.
После того, как я попробовал любой возможный совет сверху, но все еще безуспешно, я исключил любой подпроект, который мог придумать в моем проекте. В конце концов я нашел образец .pro QML, который не имел CONFIG += c++11
определены.
Это было причиной ошибки. Так что основной причиной был не проект, над которым я работал, а подпроект, который, однако, был скомпилирован на том же этапе.
Попробуйте изменить mkspecs/win32-g++/qmake.conf
строка, которая говорит:
QMAKE_CXXFLAGS_CXX11 = -std=c++0x
чтобы:
QMAKE_CXXFLAGS_CXX11 = -std=c++11
и снова запустите qmake.
Некоторые дополнительные детали:
Добавление функции «c ++ 11» в CONFIG
Переменная qmake вызывает mkspecs/features/c++11.prf
файл для извлечения (см. раздел «Добавление новых функций конфигурации» Расширенное использование qmake документ для деталей).
Этот профиль qmake имеет QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_CXX11
линия среди прочего, которые настраивают поддержку C ++ 11. Таким образом, добавление «c ++ 11» в переменную CONFIG является правильным способом указать, что вы хотите поддержку c ++ 11 для qmake, как вы упомянули в комментарии.
Я использую Qt Creator 2.7.2, и у меня есть эта строка в моем файле .pro:
QMAKE_CXXFLAGS += -std=c++11
Это работает для вас?
qmake будет использовать любые флаги для c ++ 11. Таким образом, вы можете переписать их как:
unix: QMAKE_CXXFLAGS_CXX11 = -std = c ++ 11
CONFIG * = c ++ 11
Вы даже можете сказать ему использовать -std = c ++ 14 или -std = c ++ 17 вместо этого, когда c ++ 11 добавлен в конфигурацию, так как старые qmake могут не знать о них.