你需要安装什么来在Windows上使用Clang来构建64位的c ++ 14?

Joh*_*nes 45 windows gcc llvm-clang c++11 clang++

更新:

我写了一篇详细的教程,其中包含了这个问题的前两个答案: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;
}
Run Code Online (Sandbox Code Playgroud)

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

clang++ hello.cpp -o hello.exe -std=c++14
Run Code Online (Sandbox Code Playgroud)

并得到一个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位.

我已经尝试安装最新的prengilt clang(3.6.2)和64位版本的mingw-w64(4.9.3用64位posix和sjlj用于例外),我得到:

hello.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
         ^
1 error generated.
Run Code Online (Sandbox Code Playgroud)

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

同样有人在LLVM IRC上提到你需要修改clang的驱动程序以在某些路径中查找gcc吗?


我正在寻找什么

如果有必要,我可以从源代码构建LLVM/Clang,但我真的只是寻找清晰的逐步说明,这样我就可以clang++像使用mac/linux一样轻松地使用它

就像是:

  1. 构建this versionLLVM/Clang并将其放入that directory
  2. 下载并安装this versioncygwin(或mingw32或mingw-w64)并安装these packages.
  3. 等等..

Dav*_*son 13

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

pacman -S mingw-w64-x86_64-clang
Run Code Online (Sandbox Code Playgroud)

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

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

  1. 使用pacman安装base-devel,mingw-w64-x86_64-ninja,mingw-x86_64-cmake以及构建过程所需的其他一些软件包.
  2. 抓取我的PKGBUILD脚本用于clang和同一目录中的文件.这是基于MSYS2 的mingw-w64-clang-svn软件包,主要是Martell Malone的工作.您可以在MSYS2 IRC频道上找到他并向他询问更多相关信息.
  3. 在Win64,shell中,使用我的PKGDUILD转到目录,运行export MINGW_INSTALLS=mingw64(因此您只编译64位版本),然后运行makepkg-mingw.

您不太可能在第一次尝试时完成所有操作,并且可能需要编辑某些文件.自从我上次这样做以来,Clang可能已经发生了变化,一些补丁可能不会干净利落.

  • MSYS2是Windows上的软件开发环境,它有一个包管理器(pacman).这很棒! (2认同)

小智 10

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