Подтвердить что ты не робот

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/...

4b9b3361

Ответ 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

Это работает для вас?