This is a old question, and a lot has changed since then. Given this is a common problem when trying Clang on Windows, it deserves an updated answer.
As of 2017, with the LLVM 3.9.1 build for Windows, you need the following to be able to invoke clang
from your shell.
VC++ Build Tools
We still do not have a libc++ port for Windows, so Clang uses the VC++ libraries as well as the VC++ linker.
So first of all you need the VC++ Build Tools on your system. Do note you already have those installed if you happen to have the Visual C++ IDE.
Environment Variables
You need to tell Clang where to find the build tools and its libraries.
Option 1 (vcvarsall.bat)
This is the easiest and standard option.
Run
> "%VS140COMNTOOLS%../../VC/vcvarsall.bat" amd64
Replacing amd64
with your target architecture on Clang, which may be x86
, amd64
or arm
. You may replace %VS140COMNTOOLS%
as well if you have a different version of the VC++ toolset.
As a shortcut, you could run the Visual C++ Command Prompt instead of cmd+vcvarsall
, since you need to call this batch for every command prompt you open.
Now you are able to enjoy Clang.
Option 2 (Manually)
In case you cannot run vcvarsall.bat
or want to automate this process, welcome, I had the same need.
All of the following environments variables are set automatically by vcvarsall.bat
, so you can run that and take your machine values from there. I'll give mines as examples and in the hope it's the same elsewhere.
Set the INCLUDE
environment variable to C:Program Files (x86)Microsoft Visual Studio 14.0VCINCLUDE;C:Program Files (x86)Windows Kits10include10.0.10240.0ucrt;C:Program Files (x86)Windows Kits8.1includeshared;C:Program Files (x86)Windows Kits8.1includeum;C:Program Files (x86)Windows Kits8.1includewinrt;
Set LIB
to C:Program Files (x86)Microsoft Visual Studio 14.0VCLIBamd64;C:Program Files (x86)Windows Kits10lib10.0.10240.0ucrtx64;C:Program Files (x86)Windows Kits8.1libwinv6.3umx64;
. Do note the architecture specific components!
For the build tools, you can either have the tools on PATH
or setup the VCINSTALLDIR
environment variable. Clang will try both, favoring VCINSTALLDIR
.
Set VCINSTALLDIR
to %VS140COMNTOOLS%../../VC
or add %VS140COMNTOOLS%../../VC/bin/amd64
to your PATH
.
Footnote
This is all very under documented, so the requirements may change at any time, but the Clang MSVC driver is trying to automate this as much as possible, by querying the Windows Register and many other tricks, so none of this may be necessary anymore in the future.