您需要安装什么才能在 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 上,给定以下程序:

#include <iostream>

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

我希望能够做到以下几点:

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

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

我不太在乎性能,效率,linker用什么等等,我只是希望能够正确设置clang/gcc/whatever,这样我就可以使用一个像上面那样的单一的、快速的、肮脏的控制台命令。

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


问题

作为主要 mac/linux 用户,我习惯于使用包管理器来安装最新版本的 clang, 可以正常工作

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

我尝试按照本教程进行操作:https://yongweiwu.wordpress.com/2014/12/24/installing-clang-3-5-for-windows - 并且能够使用它来构建 clang 和 link(使用 gcc 4.8.2),但是生成的二进制文件是32 位。

我已经尝试安装最新的 clang 预构建二进制文件 (3.6.2) and the 64 bit version of mingw-w64 (4.9.3 for 64 bit with posix and sjlj for exceptions),并且得到:

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

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

同样有人在 LLVM IRC 上向我提到你需要修改 clang 的 driver 以在某些路径中查找 gcc?


我在找什么

如有必要,我可以从源代码构建 LLVM/Clang,但我真的只是在寻找清晰的 step-by-step 说明,让我可以像使用 clang++ 一样轻松我可以用 mac/linux

类似于:

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

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

pacman -S mingw-w64-x86_64-clang

目前它有点旧 (3.6.2),但对您来说可能已经足够好了。那么当你运行MSYS2提供的Win64shell时,clang就会在你的路径上。

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

  1. 使用 pacman 安装 base-devel、mingw-w64-x86_64-ninja、mingw-x86_64-cmake 以及构建过程可能需要的其他一些包。
  2. 从 MSYS2 中获取 my PKGBUILD script for clang and the files in the same directory. This is based on the mingw-w64-clang-svn 包,这主要是 Martell Malone 的工作。你可以在 MSYS2 IRC 频道找到他,并向他询问更多相关信息。
  3. 在 Win64 中,shell,进入我的 PKGDUILD 目录,运行 export MINGW_INSTALLS=mingw64(所以你只编译 64 位版本),然后 运行 makepkg-mingw.

您不太可能在第一次尝试时就做对所有事情,并且某些文件可能需要编辑。自从我上次这样做以来,Clang 可能已经发生了变化,一些补丁可能无法完全应用。

如果您使用即将发布的 clang 3.7.0,只需将 PATH 设置为包含 mingw-w64 的 bin,clang 就会如您所愿

您可以为 Windows here. MinGW-w64 can be downloaded here 安装 llvm pre-release 二进制文件。当然,你应该确保路径设置正确。

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

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

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