Qt: CONFIG + = С++ 11, но -std = С++ 0x
Когда я компилирую проект под 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 файле. Разве это не то, что нужно? Что я делаю неправильно?
Когда я смотрю на make, я вижу:
CXXFLAGS = -pipe -fno-keep-inline-dllexport -g -std=c++0x
Смущает, как я говорю, С++ 11 в файле pro.
- Удалили все, запустите
qmake
и т.д., с нуля, без результата
- Как сказано, с VS2010 он работает
- Используя MinGW с gcc 4.8.0 отсюда. http://qt-project.org/downloads
- Если это имеет значение, Win7 32
Проверено:
Найденное решение, но может принять его только через некоторое время: qaru.site/info/262413/...
Ответы
Ответ 1
Хорошо, благодаря вашим намекам я понял это.
После того, как я попробовал любые возможные советы сверху, но все же без успеха, я исключил любой подпроект, о котором я мог думать в своем проекте. В конце концов я нашел образец QML.pro, у которого не было CONFIG += c++11
.
Это вызвало ошибку. Поэтому основной причиной не был проект, над которым я работал, но подпроект, который, однако, скомпилирован на том же шаге.
Ответ 2
Попробуйте изменить строку mkspecs/win32-g++/qmake.conf
, которая гласит:
QMAKE_CXXFLAGS_CXX11 = -std=c++0x
в
QMAKE_CXXFLAGS_CXX11 = -std=c++11
и запустите qmake.
Дополнительные сведения:
Добавление функции "С++ 11" к переменной CONFIG
qmake приводит к вытаскиванию файла mkspecs/features/c++11.prf
(см. раздел "Добавление новых параметров конфигурации" qmake Advanced Usage для получения более подробной информации).
Этот профиль qmake имеет строку QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_CXX11
, среди прочего, которая настраивает поддержку С++ 11. Поэтому добавление "С++ 11" в переменную CONFIG - это правильный способ указать, что вы хотите поддерживать С++ 11 qmake, как вы упомянули в комментарии.
Ответ 3
Я использую Qt Creator 2.7.2, и у меня есть эта строка в моем файле .pro:
QMAKE_CXXFLAGS += -std=c++11
Это работает для вас?