我正在尝试使用Qt在Windows上构建一个C++应用程序。
我的设置是:
- 已安装Vs200820102012
- 已安装Qt 5 RC1
现在,当我#include并尝试使用std::unique_ptr时,它告诉我它没有定义,所以我查看了VS2010标头,发现需要定义_HAS_CPP0X,所以我将其添加到.pro中作为DEFINES+=_HAS_CPP0X
这仍然没有效果,所以我ctrl+点击#includememory,只使用中的内存头找到它
C: \Program Files(x86)\Microsoft Visual Studio 9.0\VC\include
它真的没有任何std::unique_ptr!
当然,它应该关注:
C: \Program Files(x86)\Microsoft Visual Studio 10.0\VC\include?
我想我会通过完整路径包含内存,但这仍然失败了,因为包含的内存头本身存在与C++11相关的错误,比如移动和右值引用。
所以我想知道的是:
- Windows上的Qt是否可以使用Vs2010支持的C++11功能
- 如果是,那么怎么做
- 如果没有,那么我非常失望,因为在Linux上开发跨平台的Qt 5应用程序意味着它不是跨平台的,因为它不可能为任何其他平台构建
编辑:
因此,解决方案是明确的:下载Qt5的源代码,并使用MinGW构建它,您将一切就绪(包括已接受答案中的C++11 pro选项)。
您可以简单地输入:
CONFIG += c++11
在.pro文件中。但强烈建议将编译器升级到最新的g++
或clang
。
我正在运行QT Creator 2.6.0,因此假设如果您转到工具>选项>构建&运行,然后查找编译器选项卡,您应该会看到一个自动检测到的编译器列表,希望包括Microsoft Visual C++编译器10.0。如果没有,则可以手动添加。
至于C++11支持,如果您使用cmake并将项目导入QT Creator,则可以将其添加到cmake文件中:set(cmake_CXX_FLAGS"-std=C++0x")
如果您使用qmake,则根据手动设置qmake_CXFLAGS+=-std=c++0x
编辑:上述Visual Studio 2010(Visual C++10.0)默认情况下启用对C++11的支持,尽管需要注意的是它只是一个子集,但这里有一个相关的问题。
无
Windows上的Qt可以使用Vs2010支持的C++11功能吗?
您必须获得Visual 2012。
如果没有,那么我非常失望,因为在Linux上开发跨平台的Qt 5应用程序意味着它不是跨平台的,因为它不可能为任何其他平台构建!
在mac上,使用XCode 4编译器CLang 2,在任何平台上,基于GCC 4.7的编译器都可以使用