4

我正在尝试使用 Qt 在 Windows 上构建 C++ 应用程序。

我的设置是:

  1. 已安装 Vs2008,2010,2012
  2. 安装 Qt 5 RC1

现在,当我#include 并尝试使用 std::unique_ptr 它告诉我它没有定义,所以我查看了 VS2010 标头并看到需要定义 _HAS_CPP0X,所以我将它添加到 .pro 作为 DEFINES += _HAS_CPP0X

这仍然没有效果,所以我 ctrl+clicked #include 内存只是为了找到它使用的内存头:

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 相关的错误,例如移动和右值引用。

所以我想知道的是:

  1. Windows 上的 Qt 可以使用 Vs2010 支持的 C++11 功能吗?
  2. 如果是,那怎么办?
  3. 如果不是,那么我非常失望,因为在 Linux 上开发跨平台 Qt 5 应用程序意味着它不是跨平台的,因为它不可能为任何其他平台构建它!

编辑:

这样解决方案就很清楚了:下载 Qt5 的源代码并使用 MinGW 构建它,您将一切就绪(包括已接受答案中的 C++11 pro 选项)。

4

3 回答 3

2

你可以简单地说:

CONFIG += c++11

在您的 .pro 文件中。但强烈建议将您的编译器升级到最新版本g++或。clang

于 2013-01-04T14:18:16.140 回答
0

我正在运行 QT Creator 2.6.0,因此假设选项菜单没有更改,如果您转到Tools > Options > Build & Run然后查找Compilers选项卡,您应该会看到自动检测到的编译器列表,希望包括Microsoft Visual C++ 编译器 10.0。如果没有,可以手动添加。

至于 C++11 支持,如果您使用 cmake 并将项目导入 QT Creator,您可以将其添加到您的 cmake 文件中: set(CMAKE_CXX_FLAGS "-std=c++0x")

如果您使用的是 qmake,那么按照手动设置 QMAKE_CXXFLAGS += -std=c++0x

编辑: 也就是说 Visual Studio 2010 (Visual C++ 10.0) 默认开启 c++11 支持,尽管应该注意它只是一个子集,这里是一个相关的问题

于 2012-12-11T15:47:17.353 回答
-1

Windows 上的 Qt 可以使用 Vs2010 支持的 C++11 功能吗?

为此,您必须获得 Visual 2012。

如果不是,那么我非常失望,因为在 Linux 上开发跨平台 Qt 5 应用程序意味着它不是跨平台的,因为它不可能为任何其他平台构建它!

在 mac 上,使用 XCode 4 编译器 CLang 2,在任何平台上都可以使用基于 GCC 4.7 的编译器

于 2012-12-11T17:08:09.497 回答