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

e0uiprwp  于 2023-05-19  发布在  Windows
关注(0)|答案(4)|浏览(322)

在上周的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在哪里搜索标准库头之后,我将不得不告诉它在哪里寻找要链接的库。有人能一步一步地引导我完成设置吗?或者给我指出这样一个演练?

0ve6wy6x

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上的目标架构,可能是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注册表和许多其他技巧来尽可能地自动化,所以将来可能不再需要这些。

koaltpgm

koaltpgm2#

如果您没有限制使用Microsoft编译器。你可以在MinGW-w 64中使用clang。只需安装llvm binary for WindowsMinGW-w64latest version即可。
可以使用以下代码编译源文件

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

dgtucam13#

使用Clang for Windows 5.0.0(64位)(最新版本可用here; LLVM-x.y.z-win64.exe)和Visual Studio 2017 Community Edition或Build Tools安装在其默认安装路径中(包括最新/匹配的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

参考资料

rwqw0loc

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程序,请转到源目录并键入;

clang *.c

若要编译C++程序,请改用;

clang++ *.cpp

我希望这些信息对其他人有用。

相关问题