27

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

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

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

我找不到任何关于如何配置东西以在 Windows 上运行 clang 的信息,我猜在我弄清楚如何告诉 clang 在哪里搜索标准库头文件之后,我必须告诉它在哪里看用于链接的库。有人可以逐步引导我完成设置或将我指向这样的演练吗?

4

3 回答 3

19

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

截至 2017 年,使用适用于 Windows 的 LLVM 3.9.1 构建,您需要以下内容才能clang从您的 shell 调用。

VC++ 构建工具

我们仍然没有适用于 Windows 的 libc++ 端口,因此 Clang 使用 VC++ 库以及 VC++ 链接器。

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

环境变量

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

选项 1 (vcvarsall.bat)

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

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

替换amd64为 Clang 上的目标架构,可能是x86,amd64arm. %VS140COMNTOOLS%如果您有不同版本的 VC++ 工具集,您也可以更换。

作为快捷方式,您可以运行 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;

设置LIBC:\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/amd64PATH

脚注

这一切都没有充分记录,因此要求可能随时更改,但Clang MSVC 驱动程序正在尝试通过查询 Windows 寄存器和许多其他技巧来尽可能地自动化这一点,所以这些都可能不再是必要的了未来。

于 2017-03-01T19:35:08.287 回答
6

如果您不限于使用 Microsoft 编译器。您可以将 clang 与 MinGW-w64 一起使用。只需为 WindowsMinGW-w64安装最新版本的 llvm 二进制文件。

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

clang++ -target x86_64-pc-windows-gnu test.cc -o test.exe
于 2018-03-29T10:25:20.073 回答
1

使用Clang for Windows 5.0.0(64 位)和 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-cl( clang-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 的博客:在 Windows 上使用 clang

参考

于 2018-01-15T21:00:43.960 回答