set(CMAKE_C_COMPILER clang) set(CMAKE_CXX_COMPILER clang++) set(CMAKE_C_FLAGS "$CMAKE_C_FLAGS --target=x86_64-pc-windows-msvc") set(CMAKE_CXX_FLAGS "$CMAKE_CXX_FLAGS --target=x86_64-pc-windows-msvc") set(CMAKE_LINKER lld-link)
| 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 | clang on windows
clang-cl /MT /EHsc main.cpp /Fe:main.exe clang on windows
Add -DCMAKE_CXX_FLAGS="--target=x86_64-pc-windows-msvc" if needed. clang on windows
cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..