你需要安装使用Clang在Windows上构build64位的C + + 14?

更新:

我已经写了一个详细的教程,包含这个问题的前两个答案: 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在哪里可以findiostream或其他标准的c ++头文件; 我不想在多个步骤中链接。

我不关心性能,效率,链接器的使用等等。我只是想能够正确设置clang / gcc /任何东西,这样我就可以使用一个单一的,快速和肮脏的控制台命令上面那个。

我需要安装什么才能工作


问题

作为一个主要的Mac / Linux用户,我习惯于能够使用包pipe理器来安装刚刚工作的最新版本的叮当声。

我现在试图在Windows上设置clang / gnu编译器,这似乎是困难得多,如果只是因为有很less或没有直接的文档(我已经能够find)

我试图按照这个教程: https : //yongweiwu.wordpress.com/2014/12/24/installing-clang-3-5-for-windows – 并能够使用它来获取铛build立和链接(使用gcc 4.8.2),但得到的二进制文件是32位。

我已经尝试安装最新的预编译二进制文件( 3.6.2 )和64位版本的mingw-w64( 对于64位posix和sjlj,4.9.3为4.9.3 ),并获得:

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

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

同样有人在LLVM IRC上向我提到,你需要修改clang的驱动程序来在某些path中查找gcc?


我在找什么

如果需要的话,我可以从源代码构buildLLVM / Clang,但是我真的只是寻找清晰的分步说明,使我可以像使用mac / linux一样轻松地使用clang++

就像是:

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

Solutions Collecting From Web of "你需要安装使用Clang在Windows上构build64位的C + + 14?"

如果你使用即将到来的clang 3.7.0,只要设置PATH来包含mingw-w64的bin,clang就可以像你期望的那样工作

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

 pacman -S mingw-w64-x86_64-clang 

现在有点老了(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脚本铛和同一目录中的文件 。 这是基于MSYS2的mingw-w64-clang-svn软件包,主要是马爹利·马龙(Martell Malone)的工作。 你可以在MSYS2 IRC频道上找到他,并向他提问。
  3. 在Win64,shell中,用我的PKGDUILD进入目录,运行export MINGW_INSTALLS=mingw64 (所以你只编译64位版本),然后运行makepkg-mingw

第一次尝试就不太可能会得到一切,有些文件可能需要编辑。 铿锵可能已经改变,因为我做了这个,有些补丁可能不适用于干净。