2012-12-11 71 views
4

我想在Windows上使用Qt構建一個C++應用程序。Qt Creator 2.6.1 + Qt 5 + C++ 11 + MSVC2010編譯器

我的設置是:

  1. 安裝Vs2008,2010,2012
  2. Qt安裝5 RC1

現在,當我#包括並嘗試使用std ::的unique_ptr它告訴我,它沒有定義,所以我看着在VS2010頭,看到_HAS_CPP0X需要定義,所以我把它添加到的.pro的定義+ = _HAS_CPP0X

這仍然是沒有效果的,所以我CTRL + clicke

C:d#包括內存只能使用內存頭從它找到\程序文件(x86)\微軟的Visual Studio 9.0 \ VC \包括

這真的沒有任何的std ::那裏有unique_ptr!

當然,它應該看:

C:\ Program Files文件(x86)的\微軟的Visual Studio 10.0 \ VC \包括哪些內容?

我想我會通過完整的路徑包括內存,但這仍然失敗,包含的內存頭本身的錯誤涉及到C++ 11的東西,如移動和右值引用。

所以想什麼,我知道的是:

  1. QT可以在Windows上使用由VS2010支持C++ 11層的功能?
  2. 如果是的話那怎麼樣?
  3. 如果沒有,那麼我非常失望,因爲在Linux上開發跨平臺的Qt 5應用程序意味着它不是跨平臺,因爲它不可能爲任何其他平臺構建它!

編輯:

正是這樣的解決方案,這是明確的:下載QT5的來源和使用MinGW構建它,你將所有設置(INC在接受C++ 11 Pro的選項回答)。

回答

2

你可以簡單地說:

CONFIG += c++11 
在.pro文件

。但強烈建議將您的編譯器升級到最近的g++clang

+1

...請注意,切換編譯器還意味着需要重新編譯整個Qt,這需要先安裝一些先決條件(如腳本語言)。所以,另一種方法就是現在在Linux上開發,一旦有預構建的Windows二進制文件用於VC++ 2010之外的其他功能,就可以添加Windows支持...我希望它不會太長。 – hyde

+0

幾個點擊,你有所有基本的先決條件。認爲這是值得投入的時間。 – user1095108

+0

接受這個答案,因爲我得到這個在Windows上工作的唯一方法是使用一個更新的MinGw/g ++ – paulm

0

我正在Qt Creator的2.6.0所以假設選項菜單並沒有改變,如果你去工具>選項>生成&運行然後查找編譯器選項卡,你應該會看到一個列表自動檢測編譯器,希望包括Microsoft Visual C++編譯器10.0。如果不是,可以手動添加。

至於C++ 11的支持,如果你正在使用cmake並導入項目到Qt Creator的這樣你可以添加到您的cmake的文件:集(CMAKE_CXX_FLAGS 「-std =的C++ 0x」)

如果使用的qmake然後每the manual組QMAKE_CXXFLAGS + = -std =的C++ 0x

編輯: 也就是說Visual Studio 2010中(視覺C++ 10。0)默認打開C++ 11支持,但應該注意它只是一個子集,這裏是一個相關的question

+0

你說得對,選項是一樣的,但選擇編譯器導致生成cl.exe沒有找到錯誤?那些默認設置了編譯器的qmake標誌會抱怨它不知道-std = C++ 0x意味着什麼(無法​​識別的選項)。 – paulm

+0

我相信這將回答你對cl.exe的問題http://stackoverflow.com/questions/8800361/cl-is-not-recognized-as-an-internal-or-external-command,我已經添加了一個筆記關於C++ 0x。 –

+0

明天我會給路徑添加,儘管我確定它已經在路徑中,因爲從cmd.exe運行cl.exe可行! – paulm

-1

NO

QT可以在Windows上使用由VS2010支持C++ 11層的功能?

您必須爲此獲得Visual 2012。

如果沒有,那麼我非常失望,因爲在Linux上開發跨平臺的Qt 5應用程序意味着它不是跨平臺,因爲它不可能在任何其他平臺上構建它!

在Mac上,使用的XCode 4編譯鐺2和在任何平臺上編譯器基於GCC 4.7工程

+0

儘管VS2010確實支持許多C++ 11功能,例如auto/unique_ptr/lambda's等? – paulm

+0

你好auto和nullptr是的。 unique_ptr,我不這麼認爲,但在這裏查看:http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx – dzada

+0

但是,如果我打開VS2010 IDE而不是QtCreator,並且使用std :: unique_ptr創建一個hello world,它似乎受到支持,因爲它構建/運行/ etc。 – paulm