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

时间:2013-09-10 05:55:08

标签: c++ windows clang

在上周的Going Native会议上,Chandler Carruth宣布存在用于在Windows上运行clang的预构建二进制文件。相同的信息在博文here中。目标受众是Visual Studio的用户,但我想从命令行运行clang。

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

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

我找不到任何有关如何在Windows上配置运行clang的信息,我猜测在我弄清楚如何告诉clang在哪里搜索标准库标题后,我将不得不告诉它在哪里寻找要链接的库。有人可以一步一步地指导我完成设置或指导我进行这样的演练吗?

3 个答案:

答案 0 :(得分:7)

这是一个老问题,从那以后发生了很多变化。鉴于这是在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,可能是x86amd64arm。如果您有不同版本的VC ++工具集,也可以替换%VS140COMNTOOLS%

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

现在你可以享受 Clang。

选项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环境变量。 Clang会尝试两种方式,赞成VCINSTALLDIR

VCINSTALLDIR设为%VS140COMNTOOLS%../../VC或将%VS140COMNTOOLS%../../VC/bin/amd64添加到PATH

脚注

这一切都记录在案,因此需求可能随时发生变化,但Clang MSVC driver试图通过查询Windows注册表和许多其他技巧尽可能地自动化,所以没有这个将来可能还有必要。

答案 1 :(得分:1)

在默认设置路径中安装Clang for Windows 5.0.0 (64 Bit)和Visual Studio 2017社区版或构建工具(包括最新/匹配的Windows SDK):

C:\>clang --version
clang version 5.0.0 (tags/RELEASE_500/final)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin

我使用clang-clclang-cl.exe == clang.exe --driver-mode=cl)可以自动找到所有必需的msvc库/包含依赖项,从而获得了良好的体验:

C:\>clang-cl hello.cpp

或编译为32位或64位应用程序:

C:\>clang-cl -m32 hello.cpp
C:\>clang-cl -m64 hello.cpp

<强>替代

请参阅Arvid Gerstmann's Blog: Using clang on Windows

<强>参考

答案 2 :(得分:1)

如果您不限于使用Microsoft编译器。您可以使用与MinGW-W64的clang。只需安装最新版本的llvm binary for WindowsMinGW-w64

您可以使用以下代码编译源文件

clang++ -target x86_64-pc-windows-gnu test.cc -o test.exe