Qt: CONFIG += c++11, но-std=c++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

запутанный, как я говорю c++11 в файле pro.

  1. удалил все, беги!--3--> etc, с нуля, без результата
  2. как сказано, с VS2010 он работает
  3. использование MinGW с gcc 4.8.0 отсюда. http://qt-project.org/downloads
  4. если это имеет значение, Win7 32

проверил:

найдено решение, но может принять его только через некоторое время:https://stackoverflow.com/a/19530028/356726

4 ответов


хорошо, благодаря вашим намекам я понял это.

после того, как я попробовал любые возможные советы сверху, все еще безуспешно, я исключил любой подпроект, который мог придумать в своем проекте. В конце концов я нашел образец QML .pro которого не было 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 line среди других вещей, которые настройка поддержки 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 могут не знать о них.