2012-12-11 68 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