在Windows上如何从命令行运行clang?

钱德勒·卡鲁斯(Chendler Carruth)在上周举行的本土原住民大会上宣布,预装的二进制文件会在窗户上运行。 相同的信息在这里的博客文章。 目标受众是Visual Studio的用户,但是我想从命令行运行clang。

我运行安装程序,并将LLVM bin目录添加到我的path,但是当我尝试编译“Hello world”时,我得到这个:

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

我找不到任何有关如何configuration在Windows上运行clang的信息,并且我猜测,在我弄清楚如何告诉clang在哪里search标准库头部之后,我将不得不告诉它在哪里看为图书馆链接。 有人可以通过一步一步地走过我的设置或指向我这样的演练吗?

Solutions Collecting From Web of "在Windows上如何从命令行运行clang?"

Clang在Windows上是一项正在进行的工作,而Chandler Carruth在2013年的Going Native演讲中表示,iostreams是目前还没有工作的东西之一。

这是一个古老的问题,自那以后发生了很多变化。 鉴于这是在Windows上尝试Clang的常见问题,它值得更新的答案。

从2017年开始,在Windows的LLVM 3.9.1版本中,您需要以下内容才能从shell中调用clang

VC ++构建工具

我们还没有Windows的libc ++端口,所以Clang使用VC ++库以及VC ++链接器。

所以首先你需要在你的系统上使用VC ++ Build Tools 。 请注意,如果您碰巧拥有Visual C ++ IDE,则已经安装了这些软件。

环境变量

你需要告诉Clang在哪里找到构建工具及其库。

选项1(vcvarsall.bat)

这是最简单和标准的选择。

> "%VS140COMNTOOLS%../../VC/vcvarsall.bat" amd64

在Clang上用你的目标架构替换amd64 ,可能是x86amd64或者arm 。 如果您拥有不同版本的VC ++工具集,则可以替换%VS140COMNTOOLS%

作为快捷方式,您可以运行Visual C ++命令提示符而不是cmd+vcvarsall ,因为您需要为打开的每个命令提示符调用此批处理。

现在你可以享受铿锵。

选项2(手动)

如果你不能运行vcvarsall.bat或者想自动执行这个过程,欢迎,我有同样的需要。

以下所有的环境变量都是由vcvarsall.bat自动设置的,所以你可以运行它并从那里取出你的机器值。 我会以矿井为例,希望在其他地方也是如此。

INCLUDE环境变量设置为C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE;C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt;C:\Program Files (x86)\Windows Kits\8.1\include\shared;C:\Program Files (x86)\Windows Kits\8.1\include\um;C:\Program Files (x86)\Windows Kits\8.1\include\winrt;

LIB设置为C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64; 。 请注意架构特定的组件!

对于构建工具,可以使用PATH上的工具或设置VCINSTALLDIR环境变量。 VCINSTALLDIR会尝试两个,赞成VCINSTALLDIR

VCINSTALLDIR设置为%VS140COMNTOOLS%../../VC或将%VS140COMNTOOLS%../../VC/bin/amd64到您的PATH

脚注

这是所有非常低的记录,所以要求可能随时改变,但铿锵MSVC驱动程序试图通过查询Windows注册表和其他许多技巧尽可能自动化,所以这可能不再是必要的未来。