关于c ++ 11:要在Windows上使用Clang构建64位的c ++ 14,需要安装什么?

What do you need to install to use Clang on windows to build c++14 for 64 bit?

更新:

我编写了详细的教程,其中包含有关此问题的前两个答案:http://blog.johannesmp.com/2015/09/01/installing-clang-on-windows-pt1/


TL; DR

在Windows上,给定以下程序:

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>

int main()
{
    int arr[] = {1, 2, 3, 4, 5};
    for(auto el : arr)
    {
        std::cout << el << std::endl;
    }
    return 0;
}

我希望能够执行以下操作:

1
clang++ hello.cpp -o hello.exe -std=c++14

并获得一个可以正常工作的64位可执行文件。我不想附加大量的-I包含项来告诉clang在哪里可以找到iostream或其他标准c ++头文件;我不想链接多个步骤。

我不太在乎性能,效率,使用了什么链接器等。我只想能够正确设置clang / gcc /任何内容,以便可以使用单个,快速且肮脏的控制台命令,例如以上之一。

我需要安装什么才能正常工作?


问题

作为主要的mac / linux用户,我习惯于仅使用软件包管理器来安装最新版本的clang,该方法才有效。

我现在正在尝试在Windows上设置clang / gnu编译器,这似乎要困难得多,如果仅仅是因为那里几乎没有甚至没有直接的文档(我已经能够找到)

我尝试遵循此教程:https://yongweiwu.wordpress.com/2014/12/24/installing-clang-3-5-for-windows-并能够使用它来获取clang的构建和链接(使用gcc 4.8.2),但生成的二进制文件为32位。

我试过安装最新的clang预编译二进制文件(3.6.2)和mingw-w64的64位版本(4.9.3为posix和sjlj为64位,例外),并且正在获取:

1
2
3
4
hello.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
         ^
1 error generated.

这似乎表明clang没有看到gcc的文件。似乎某些版本的LLVM / clang只是在寻找某些版本的gcc,但这似乎没有记录在任何地方?

类似地,有人在LLVM IRC上对我说过,您需要修改clang的驱动程序以在某些路径中查找gcc?


我在寻找什么

我可以根据需要从源代码构建LLVM / Clang,但我实际上只是在寻找清晰的分步说明,使我能够像使用mac /一样轻松地使用clang++ linux

就像是:

  • 构建LLVM / Clang的this version并将其放置在that directory
  • 下载并安装cygwin的this version(或mingw32或mingw-w64)并安装these packages
  • 等等..

  • 尝试安装MSYS2,然后安装mingw-w64-x86_64-clang(二进制)程序包:

    1
    pacman -S mingw-w64-x86_64-clang

    目前(3.6.2)有点旧,但对于您来说可能已经足够了。然后,当您运行MSYS2提供的Win64 Shell时,clang将在您的路径上。

    如果还不够好,我最近就用MSYS2构建了一个64位的clang版本,并用它来编译本机的64位Windows可执行文件。我的过程是这样的:

  • 使用pacman安装base-devel,mingw-w64-x86_64-ninja,mingw-x86_64-cmake以及构建过程可能需要的其他一些软件包。
  • 抓取我的PKGBUILD脚本以获取clang和同一目录中的文件。这是基于MSYS2的mingw-w64-clang-svn软件包的,这主要是Martell Malone所做的工作。您可以在MSYS2 IRC频道上找到他,并向他询问更多信息。
  • 在Win64 Shell中,使用我的PKGDUILD转到目录,运行export MINGW_INSTALLS=mingw64(因此您仅编译64位版本),然后运行makepkg-mingw
  • 您不太可能在首次尝试时就能正确处理所有问题,并且可能需要编辑某些文件。自从我上次执行此操作以来,Clang可能已更改,并且某些补丁可能无法完全应用。


    如果您使用即将到来的clang 3.7.0,只需将PATH设置为包含mingw-w64的bin,clang就可以按预期工作


    您可以在此处为Windows安装llvm预发行二进制文件。 MinGW-w64可以在这里下载。当然,您应该确保正确设置路径。

    对于最新版本的clang,例如clang 6.0.0。 @ user5271266的上述解决方案还不够。现在,铛Windows的默认目标是x86_64-pc-windows-msvc(假设您使用的是64位Windows)。

    为了编译C ++源文件,根据这里,我们应该更改目标:

    1
    clang++ -target x86_64-pc-windows-gnu -std=c++14 test.cc -o test.exe