2013-10-22 86 views
20

當我編譯一個項目在下Qt Creator 2.8/Qt5.1與VS 2010一切都很好。如果我對MinGW做同樣的事情,我會得到以下錯誤。Qt:CONFIG + = C++ 11,但-std = C++ 0x

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,但我在.pro文件中有CONFIG += console c++11。這不是需要的嗎? 我在做什麼錯?

當我看廠名我看到:

CXXFLAGS  = -pipe -fno-keep-inline-dllexport -g -std=c++0x 

混亂,因爲我在親文件說C++ 11。

  1. 一切都已經刪除,運行qmake等,從白手起家,沒有結果
  2. 至於說,與VS2010它的工作原理
  3. 從這裏用gcc 4.8.0使用MinGW的。 http://qt-project.org/downloads
  4. 如果此事項中,Win7 32

選中:

找到的解決方案,但可以只在一段時間內接受:https://stackoverflow.com/a/19530028/356726

+4

這是一樣的事情,除了'-std = C++ 0x'也適用於老版本的編譯器。 –

+0

謝謝。但是,當我使用#include

+1

時,爲什麼「必須啓用-std = C++ 11」錯誤確實很奇怪。 –

回答

10

好的,多虧了你的提示,我已經弄明白了。

在我嘗試了上面的任何可能的建議後,仍然沒有成功,我已經排除了我能想到的項目中的任何子項目。最終我找到了一個沒有定義CONFIG += c++11的QML示例.pro。

這是導致錯誤。因此,根本原因不是我正在研究的項目,而是一個子項目,然而它是在同一步驟中編譯的。

6

我使用Qt Creator的2.7.2,我有這條線在我的.pro文件:

QMAKE_CXXFLAGS += -std=c++11 

這是否對你的工作?

+0

我會給這條線索。某處我讀過不使用QMAKE_CXXFLAGS,但CONFIG + = C++ 11 - 但我無法記起。只要我有結果就會更新。 –

+1

這對我來說就像一個魅力!謝謝! – nullgeppetto

9

嘗試改變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 Advanced Usage的「添加新配置功能」一節文件的細節)。

qmake配置文件有一個QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_CXX11行配置C++ 11支持的其他事情。因此,向CONFIG變量添加「C++ 11」是正確的方式,表示您希望對qmake提供C++ 11支持,就像您在評論中提到的那樣。

+0

使用Ubuntu 14.04下最新的QtCreator,我仍然遇到同樣的問題(儘管在/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf中)。我覺得我必須編輯已安裝的conf文件才能使其工作。有沒有辦法讓用戶配置或pro/pri文件重新定義這個變量? – sage

+0

我不知道 - 我對qmake知之甚少,不知道是否有用戶可訪問的機制來覆蓋它。 –