在上周的Going Native会议上,钱德勒Carruth宣布了在Windows上运行clang的预构建二进制文件的存在。同样的信息在博客文章here中。它的目标受众是VisualStudio的用户,但我想从命令行运行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在哪里搜索标准库头之后,我将不得不告诉它在哪里寻找要链接的库。有人能一步一步地引导我完成设置吗?或者给我指出这样一个演练?
4条答案
按热度按时间0ve6wy6x1#
这是一个老问题,从那时起发生了很多变化。鉴于这是在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
将
amd64
替换为Clang上的目标架构,可能是x86
、amd64
或arm
。如果您有不同版本的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注册表和许多其他技巧来尽可能地自动化,所以将来可能不再需要这些。
koaltpgm2#
如果您没有限制使用Microsoft编译器。你可以在MinGW-w 64中使用clang。只需安装llvm binary for Windows和MinGW-w64的latest version即可。
可以使用以下代码编译源文件
dgtucam13#
使用Clang for Windows 5.0.0(64位)(最新版本可用here;
LLVM-x.y.z-win64.exe
)和Visual Studio 2017 Community Edition或Build Tools安装在其默认安装路径中(包括最新/匹配的Windows SDK):我使用
clang-cl
(clang-cl.exe
==clang.exe --driver-mode=cl
)取得了很好的经验,它可以自动找到所有必要的msvc
库/包含依赖项:或者编译为32位或64位应用程序:
备选
参见Arvid Gerstmann's Blog: Using clang on Windows。
参考资料
rwqw0loc4#
以下是我在Windows 10上从终端使用 clang 编译器所做的:
1.我下载并安装了Build Tools for Visual Studio 2022。这将安装并打开 *Visual Studio安装程序 *。
1.在 *Visual Studio安装程序 * 中,我选择了三件事:
1.使用C++进行桌面开发从 * 工作负载 * 选项卡
1.**C++ Clang Compiler for Windows(13.0.1)**从 Individual Components 选项卡。
1.**C++ Clang-cl for v143 build tools(x64/x86)**从 Individual Components 选项卡。
1.然后我将 * clang.exe * 和 clang++.exe 的路径添加到PATH环境变量中。对于我来说,路径是 C:\Program Files(x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\Llvm\x64\bin。
这样做之后,我就可以从终端使用clang编译器了。要编译C程序,请转到源目录并键入;
若要编译C++程序,请改用;
我希望这些信息对其他人有用。