For advanced use, see official docs: Clang for Windows .
--target=x86_64-pc-windows-msvc --target=x86_64-w64-windows-gnu MSVC target (native Windows) clang main.c -o main.exe clang main.cpp -o main.exe -std=c++20 Using clang-cl (MSVC-compatible syntax) clang-cl /EHsc main.cpp /Fe:main.exe MinGW target (produces more Unix-like ABI) clang --target=x86_64-w64-windows-gnu main.c -o main.exe 5. Important Flags for Windows | Purpose | Clang (MSVC target) | clang-cl | |---------|---------------------|-----------| | Enable exceptions | -fexceptions (on by default) | /EHsc | | Enable RTTI | -frtti (on by default) | /GR | | Optimization level | -O2 | /O2 | | Debug symbols | -g | /Zi | | Linker | -fuse-ld=lld (fast) or -fuse-ld=link (MSVC link.exe) | /link | | Precompiled headers | -Xclang -fmodule-header | /Yc , /Yu | | Static runtime | /MT (not in clang, but passed to linker) | /MT | Example: Release build with LTO clang -O2 -flto=thin -fuse-ld=lld main.cpp -o main.exe 6. Linking and Runtimes MSVC target linking Clang expects link.exe (Microsoft linker) or lld-link.exe (LLVM’s MSVC‑compatible linker). If using standalone LLVM without VS, you must install the Windows SDK and MSVC build tools (or copy link.exe and libraries). clang on windows
clang-cl /Zi main.cpp /link /DEBUG Then load into WinDbg. Visual Studio generator + Clang cmake -G "Visual Studio 17 2022" -A x64 -T ClangCL .. This sets clang-cl.exe as the compiler. Ninja generator (explicit Clang) cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. Add -DCMAKE_CXX_FLAGS="--target=x86_64-pc-windows-msvc" if needed. Toolchain file for MSVC environment windows_msvc_toolchain.cmake : For advanced use, see official docs: Clang for Windows
Example with clang-cl: