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.
- удалил все, беги!--3--> etc, с нуля, без результата
- как сказано, с VS2010 он работает
- использование MinGW с gcc 4.8.0 отсюда. http://qt-project.org/downloads
- если это имеет значение, Win7 32
проверил:
- нет ANSI:c++11 #include дает ошибку компиляции
- std=c+11 MinGW:в C++11 функций с Компилятор MinGW
найдено решение, но может принять его только через некоторое время: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 могут не знать о них.