【问题标题】:C++11 compiler for windows用于 Windows 的 C++11 编译器
【发布时间】:2011-11-01 12:32:00
【问题描述】:

我刚刚在 Channel9 上观看了一些视频。我发现像 lambdas 这样的东西真的很酷。当我试图复制示例时,它失败了。 auto 也没有用。

我正在使用随 gcc-4.4.0 提供的诺基亚 qtcreator。

我想知道哪个编译器实现了有趣的功能,以便我可以玩耍和学习。我不反对 MS 或任何东西,所以如果 Visual Studio 具有这些功能,我不介意尝试。

【问题讨论】:

标签: c++ compiler-construction c++11


【解决方案1】:

几乎所有 C++11 功能都在 GCC 4.6.x 中实现。获取最新 GCC 版本 (MinGW) 的好地方是 TDM 网站 - http://tdm-gcc.tdragon.net/download。通过覆盖文件,用 TDM GCC 替换当前的 GCC 应该很容易......

【讨论】:

  • 请注意,尽管这些看起来不错,但 TDM 做了一些令人讨厌的更改(删除命令行选项,更改 ABI),使其与原始(未修补)上游版本不兼容。
  • 是的。注意我说的是“一个好地方”——这并不一定意味着唯一一个。 :) 我在 GNU/Linux 上交叉编译构建了我自己的 Windows GCC。 ;)
【解决方案2】:

MinGW 的特殊版本:

MinGW-Builds 为您提供 gcc 提供的一切(当前为 4.7.2)

即:包括对 std::thread、std::async、std::future 等的支持。

据我所知,这是迄今为止你可以在 Windows 上获得的最完整的 C++11。

您只需获得MinGW-build binaries here。与其他基于 gcc 的安装不同,它支持 posix 线程,这是目前获得 gcc 对 C++11 线程和在 Windows 上工作的朋友的支持的关键。

将目录mingw解压到任意位置,并将以下两个路径添加到你的PATH环境变量中:(好吧,更改F:\coding ...)

F:\coding\MinGW\bin
F:\coding\MinGW\msys\1.0\bin

两者相加,用分号隔开。您将需要注销或重新启动。为了验证你做对了,你可以打开一个命令提示符,然后写

g++ --version 

你应该得到这样的回应,提到 MinGW-builds:

g++ (Built by MinGW-builds project) 4.7.2 
Copyright (C) 2012 Free Software Foundation, Inc. ...

我写了一个更完整的使用 Eclipse 的说明,在这里:http://scrupulousabstractions.tumblr.com/post/36441490955/eclipse-mingw-builds

【讨论】:

  • 不幸的是,在 Windows 上根本没有线程支持。只需尝试运行任何 std::thread 示例,例如通过安装 code::blocks + mingw (GCC 4.7.1)。这是捷径。即使你安装了 GCC+MingW,你也不会在 windows 上支持线程
  • @DarioOO,这是不正确的,也是我帖子的重点。我什至已经广泛尝试过。 std::thread 和 async/future 都适用于我发布的版本和说明。 + 现在,如果您按照我上面的链接,您将获得 gcc 4.8(甚至更好)。
  • 那么 std::thread 将在 Windows 下与 Gcc 4.8 一起使用吗?现在我试试 thx
  • 我测试了 MinGW-Builds 工具链(v4.8 posix 和 windows 线程模型版本)。 std::threads 仅适用于 posix 版本,不适用于 win32 线程模型。如果你想要完整的 C++11 支持,你应该使用 posix 工具链。
【解决方案3】:

为了在 Windows 上玩耍和学习 C++11,我推荐 Stephan T. Lavavej 的 MinGW Distro。最新版本包含 GCC 4.8.2 和 Boost 1.55.0。

【讨论】:

    【解决方案4】:

    如果您正在寻找支持许多 C++11 功能的 Windows 上与 gcc 兼容的编译器,请联系 look at MinGW-w64

    此外,如果您只是在寻找 lambas 和 auto,以及其他一些 C++11 功能,例如 decltype 等,(同样,与最新的稳定 gcc 分支相比,实现的功能并不多)那么你也可以在 Windows 上为 C++ 使用free Visual Studio 2010 Express

    【讨论】:

    • 特别是全功能的 Personal Builds(如 sezero 的 4.5 或我的 4.6)提供了您想要的所有有趣的 C++11 内容。 (我所说的全功能是指包中包含的 gdb 和 mingw32-make)
    • @rubenvb : 我可以从哪里得到你的构建?
    • nikhil: 32-bit64-bit 然后点击 rubenvb 或 sezero 版本。注意我不构建 multilib 编译器; 32 位版本仅构建 32 位二进制文​​件,64 位版本仅构建 64 位。您应该能够用这些替换现有的 MinGW 安装。撰写本文时的最新版本是 4.6.3(预发布),非常接近 4.6.2 版本。
    • 我得到了你的版本,但它不支持自动。
    【解决方案5】:

    有关编译器和受支持的 C++11 功能的概述,请参阅 here

    【讨论】:

    【解决方案6】:

    Scott Meyers 在此维护一个网页:

    C++11FeatureAvailability

    网页上的第一个链接是:

    Apache Wiki Overview of C++11 Support in Several Compilers 是你应该看看的。它详细记录了所有流行编译器支持的 C++11 特性。

    【讨论】:

      【解决方案7】:

      【讨论】:

        【解决方案8】:

        Visual Studio 2017 支持 C++11、C++14 和 C++17。 + 一些现代 C++“实验”模块。如果您决定使用 Visual Studio,则在项目属性中设置 C++ 标准。默认为 C++11,但您可以将其设置为 C++14、C++17 或最新草案。

        【讨论】:

        • 什么鬼。这是一个7岁的问题。当然这已经不是问题了……
        【解决方案9】:

        关于g++,C++0x特性支持应该在这里详述:C++0x/C++11 Support in GCC - GNU Project - Free Software Foundation (FSF)

        【讨论】:

          【解决方案10】:

          如果您想使用 Windows 机器测试大部分 C++11 语法,您有两种选择:

          1. 安装 Cygwin 并从源代码 gcc-4.7(最新快照)和 clang++libstdc++ 编译。但是,不能保证这会起作用。

          2. 最安全的选择:在虚拟机(VirtualBox 是免费的虚拟机应用程序)中安装现代 Linux(例如 Ubuntu,如果您是 Linux 新手)并在此虚拟​​机中编译 gcc-4.7clang++ .按照this website 的说明,我能够在 Ubuntu 11.10 上成功编译它们。

          3. 截至 2014 年,最好的选择是使用更新了最新 CTP 的 Visual Studio 2013(这甚至适用于 Express 版)。

          【讨论】:

          • 还要小心,用虚拟机和gcc!有时 gcc 可以使用您所有的处理器时间,并使其他一切变得缓慢,特别是如果您在图形桌面下(与控制台相反)。另外,如果你使用 ubuntu,你几乎不需要编译任何东西,你只需要找到一个包含你想要的包的 deb 文件,在 ubuntu 论坛中查找。
          【解决方案11】:

          少数 Min-GW 编译器不支持 C++ 版本 11 或更高版本。 OpenCV 中的线程需要此版本。所以我会建议使用TDM-GCC Compiler 而不是 MinGW 编译器。安装此编译器并将路径 C:\TDM-GCC-64\bin 设置为系统的环境变量。

          【讨论】:

            猜你喜欢
            • 2015-09-12
            • 2013-02-16
            • 1970-01-01
            • 1970-01-01
            • 2013-12-08
            • 1970-01-01
            • 2010-11-21
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多