2014-04-01 60 views
1

剛剛下載並在OSX 10.9.2上安裝了Qt5。Qt5/QtCreator中的C++ 11 OSX上的3.0.1

當試圖使用clang運行套件編譯一些C++ 11代碼時,當我試圖包含cstdint時出現故障;

fatal error: 'cstdint' file not found 

經過大量的谷歌搜索後,似乎C++ 11默認情況下不是'啓用',它會觸發這個錯誤。看來在Qt5中,啓用C++ 11的方式已經發生了變化。它應該像在項目 - >構建&運行 - >構建步驟 - >其他參數「中添加CONFIG + = C++ 11一樣簡單,只要我理解正確。

然而這並沒有什麼區別。

所以;任何人都知道如何使用QtCreator和clang工具包來啓用C++ 11?

關於QtCreator給我以下信息: QtCreator 3.0.1 基於Qt 5.2.1(鐺5.0(蘋果),64位)

編譯器輸出如下:

14:25:23: Running steps for project shelly... 
14:25:23: Starting: "/Users/m/Qt5.2.1/5.2.1/clang_64/bin/qmake" /Volumes/files/Programmering/shelly/shelly.pro -r -spec macx-clang CONFIG+=debug CONFIG+=x86_64 CONFIG+=declarative_debug CONFIG+=qml_debug CONFIG+=c++11 
14:25:23: The process "/Users/m/Qt5.2.1/5.2.1/clang_64/bin/qmake" exited normally. 
14:25:23: Starting: "/usr/bin/make" 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -c -pipe -g -gdwarf-2 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -mmacosx-version-min=10.7 -Wall -W -fPIE -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/Users/m/Qt5.2.1/5.2.1/clang_64/mkspecs/macx-clang -I../shelly -I/Users/m/Qt5.2.1/5.2.1/clang_64/lib/QtOpenGL.framework/Versions/5/Headers -I/Users/m/Qt5.2.1/5.2.1/clang_64/lib/QtWidgets.framework/Versions/5/Headers -I/Users/m/Qt5.2.1/5.2.1/clang_64/lib/QtGui.framework/Versions/5/Headers -I/Users/m/Qt5.2.1/5.2.1/clang_64/lib/QtCore.framework/Versions/5/Headers -I. -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I. -F/Users/m/Qt5.2.1/5.2.1/clang_64/lib -o datainterval.o ../shelly/core/datainterval.c++ 
In file included from ../shelly/core/datainterval.c++:5: 
In file included from ../shelly/core/datainterval.h++:9: 
../shelly/core/datatime.h++:9:10: fatal error: 'cstdint' file not found 
#include <cstdint> // GPL w/runtime exception 
     ^
1 error generated. 
make: *** [datainterval.o] Error 1 
14:25:24: The process "/usr/bin/make" exited with code 2. 
Error while building/deploying project shelly (kit: Desktop Qt 5.2.1 clang 64bit) 
When executing step 'Make' 
14:25:24: Elapsed time: 00:01. 

更新:

已經做了我的問題的'最小重新創建'

  1. 創建一個新項目,即「Qt Widgets Application」。
  2. 將所有內容保留爲默認值,但路徑除外。
  3. 在創建的文件mainwindow.C++,添加cstdint包括聲明:
  4. 嘗試構建它(它上面的失敗)
  5. 添加的「項目」 - >「建立&運行」 - >「建設步驟」 - >‘的附加參數’

    CONFIG + = C++ 11

‘有效qmake調用’行然後讀取

qmake /Users/m/Documents/ProgrammeringOSX/testC11/testC11.pro -r -spec macx-clang CONFIG+=debug CONFIG+=x86_64 CONFIG+=declarative_debug CONFIG+=qml_debug CONFIG+=c++11 

...錯誤仍然存​​在。

:(

回答

0

好吧,

我似乎已經「固定」它......我得說我是隨機變化的參數,只是爲了看看它有什麼作用的點,突然這樣做了它的:

QMAKE_MACOSX_DEPLOYMENT_TARGET=10.9 

如果我加入CONFIG(如果我將其設置在pro文件或在GUI中並不重要)+ = C++ 11,目標設定爲10.7,沒有它10.6,因此這迫使它達到10.9(也嘗試過10.8,但是沒有; 10.9是)。

一個有趣的事情是,我不需要在「最小重新創建」版本中添加CONFIG + = C++ 11 ...我想如果我實際上添加了任何C++ 11代碼,我會得到這一點。但嬰兒的步驟,嬰兒的步驟!

另一個有趣的事情是,當我將目標更改爲10.9時,那麼我添加了僞造的QMAKE_CXXFLAGS參數,並且鐺聲調失敗(我想它聽從了我的'pleaseFailNow'參數)。

謝謝你的幫助!

Cheers /Daniel

0

我有相同的設置,你,和更新項目具有以下行.pro文件後已經使用C++ 11周的特點:

CONFIG += c++11 

不過,我想你解決方案應該完成同樣的事情,所以它可能是一個外部配置問題。當我包含頭文件時,我無法重現錯誤。

+0

謝謝。試了一下,無論有沒有LIBS和QMAKE的東西,我通過谷歌發現的許多網頁中提到的東西。已經通過我的問題的「最小化娛樂」進行了更新。 – Daniel

+0

仍然無法用您的步驟重現錯誤。這是你在路上唯一的qmake嗎? –

+0

剛剛在相關問題上看到了此建議。將以下內容添加到.pro文件中: QMAKE_CXXFLAGS + = -std = C++ 11 -stdlib = libC++ -mmacosx-version -min = 10.7 LIBS + = -stdlib = libC++ -mmacosx-version-min = 10.7 http ://stackoverflow.com/a/15759514/798377 –