OSX上的Qt5 / QtCreator 3.0.1中的C ++ 11

时间:2014-04-01 12:35:09

标签: macos c++11 qt-creator qt5

刚刚在OSX 10.9.2上下载并安装了Qt5。

当尝试使用clang run kit编译一些C ++ 11代码时,当我尝试包含cstdint时,我遇到了失败;

fatal error: 'cstdint' file not found

经过大量的谷歌搜索后,似乎默认情况下c ++ 11没有“启用”,这会触发此错误。在Qt5中,似乎启用c ++ 11的方式也发生了变化。如果我理解正确的话,它应该像在“Projects - > Build& Run - > Build Steps - > Additional arguments”中添加CONFIG + = c ++ 11一样简单。

然而,这没有任何区别。

因此;谁知道如何使用QtCreator和clang工具包启用c ++ 11?

关于QtCreator给了我以下信息: QtCreator 3.0.1 基于Qt 5.2.1(Clang 5.0(Apple),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 include语句:
  4. 尝试构建它(如上所述失败)
  5. 添加“项目” - &gt; “构建和扩展运行“ - &gt; “构建步骤” - &gt; “其他论点”

    CONFIG + = C ++ 11

  6. 然后“有效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
    

    ......错误仍然存​​在。

    :(

2 个答案:

答案 0 :(得分:0)

我有与您相同的设置,并在使用以下行更新项目.pro文件后使用了c ++ 11功能:

CONFIG += c++11

但是,我认为您的解决方案应该完成同样的事情,因此可能是外部配置问题。当我包含头文件时,我无法重现错误。

答案 1 :(得分:0)

确定,

我好像已经“修复”了......我已经到了这个地步,我正在随机改变参数只是为了看看它有什么效果,突然之间就这样做了:

QMAKE_MACOSX_DEPLOYMENT_TARGET=10.9

(如果我在.pro文件或GUI中设置它无关紧要)

如果我添加CONFIG + = c ++ 11,目标设置为10.7,没有10.6,所以这会强制它为10.9(同样尝试10.8,但是没有; 10.9)。

一个有趣的事情是,我不需要在“最小娱乐”版本中添加CONFIG + = c ++ 11 ...我想如果我实际添加任何C ++ 11代码,我将达到这一点。但宝贝步骤,宝贝步骤!

另一个有趣的事情是,当我将目标更改为10.9时,那么我的伪造QMAKE_CXXFLAGS参数被添加并且铿锵声调用失败(我猜它注意了我的'pleaseFailNow'参数)。

感谢您的帮助!

干杯 /丹尼尔