在上周的 Going Native 会议上,Chandler Carruth 宣布存在用于在 Windows 上运行 clang 的预构建二进制文件。相同的信息在 此处 的博客文章中。目标受众是 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 在哪里搜索标准库头文件之后,我必须告诉它在哪里看用于链接的库。有人可以逐步引导我完成设置或将我指向这样的演练吗?
原文由 KnowItAllWannabe 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个老问题,从那以后发生了很多变化。鉴于这是在 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
Replacing
amd64
with your target architecture on Clang, which may bex86
,amd64
orarm
.如果您有不同版本的 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 驱动程序 正在尝试通过查询 Windows 寄存器和许多其他技巧来尽可能地自动化这一点,因此这些可能不再是必要的了未来。