Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
mohitmishra786 avatar

Msvc Cl

  • 361 installs
  • 155 repo stars
  • Updated June 27, 2026
  • mohitmishra786/low-level-dev-skills

msvc-cl is a Claude Code skill that guides developers through compiling and linking Windows-native C/C++ with MSVC cl/link, SDK version selection, PDB debug output, and MSVC-specific flags for Visual Studio and headless

About

msvc-cl is a low-level Windows build skill for developers who need MSVC cl.exe and link.exe instead of GCC or Clang. The skill covers SDK version management, PDB debug symbol generation, and MSVC-specific compiler and linker flags for Visual Studio projects and headless CI pipelines on Windows runners. Developers reach for msvc-cl when porting native code, debugging release builds, or configuring automated Windows compilation where incorrect flags or missing PDBs break production diagnostics. The skill targets engineers shipping Windows desktop services, game middleware, or native extensions who must reason about MSVC toolchains without hand-waving generic C++ advice.

  • cl/link flag recipes
  • PDB and debug symbol flow
  • SDK and toolset selection
  • /W4 warning hygiene
  • CI vcvars automation

Msvc Cl by the numbers

  • 361 all-time installs (skills.sh)
  • +22 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #154 of 550 CLI & Terminal skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/mohitmishra786/low-level-dev-skills --skill msvc-cl

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs361
repo stars155
Last updatedJune 27, 2026
Repositorymohitmishra786/low-level-dev-skills

How do you compile C/C++ with MSVC cl in CI?

Compile and link Windows-native C/C++ with MSVC cl/link, manage SDK versions, PDB debug info, and MSVC-specific flags for Visual Studio and headless CI agents.

Who is it for?

Windows C/C++ developers configuring MSVC builds in Visual Studio or headless CI agents who need correct cl/link flags and PDB output.

Skip if: Developers building cross-platform projects with CMake and GCC or Clang only, or teams without any Windows native compilation requirement.

When should I use this skill?

The user asks about MSVC cl.exe, link.exe, Windows SDK versions, PDB files, or MSVC compiler flags for C/C++ builds.

What you get

MSVC compile and link command lines, SDK version pins, PDB debug settings, and CI-ready build flag documentation.

  • MSVC compile and link command lines
  • PDB debug configuration
  • SDK version documentation

Files

SKILL.mdMarkdownGitHub ↗

MSVC cl.exe and clang-cl

Purpose

Guide agents through Windows C/C++ compilation: MSVC cl.exe, clang-cl as MSVC-compatible driver, MSBuild project settings, and runtime library choices.

Triggers

  • "How do I compile with MSVC from the command line?"
  • "What is the MSVC equivalent of -O2?"
  • "/MT vs /MD — which do I use?"
  • "How do I use clang-cl instead of cl.exe?"
  • "I'm getting LNK errors on Windows"
  • "How do I generate PDB files?"

Workflow

1. Set up the environment

MSVC requires the Visual Studio environment variables. Use the Developer Command Prompt or set up manually:

REM x64 native
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"

REM x86 cross (host x64, target x86)
"...\vcvarsamd64_x86.bat"

REM Check compiler version
cl /?

In CMake, use the "Visual Studio 17 2022" generator or pass -DCMAKE_GENERATOR="Visual Studio 17 2022".

2. Flag translation: GCC → MSVC

GCC/ClangMSVC cl.exeNotes
-O0/OdDebug, no optimisation
-O1/O1Minimise size
-O2/O2Maximise speed
-O3/OxFull optimisation
-Os/OsFavour size
-g/ZiPDB debug info
-g (embedded)/Z7Debug info in object file
-Wall/W3 or /W4Warning level
-Werror/WXWarnings as errors
-std=c++17/std:c++17Standard selection
-DFOO=1/DFOO=1Preprocessor define
-I path/I pathInclude path
-c/cCompile only (no link)
-o out/Fe:out.exe or /Fo:out.objOutput file
-shared/LDBuild DLL
-fPIC(implicit on Windows)Not needed on Windows
-flto/GL (compile) + /LTCG (link)Whole program optimisation

3. Runtime library selection

This is the most common source of LNK errors on Windows.

FlagRuntimeUse case
/MDMSVCRT.dll (dynamic)Release, DLL linkage (recommended default)
/MDdMSVCRTd.dll (debug dynamic)Debug builds
/MTStatic CRTStandalone exe; avoid mixing with DLLs
/MTdStatic CRT debugDebug + static

Rule: All objects and libraries in a link must use the same runtime. Mixing /MT and /MD causes LNK2038: mismatch detected.

4. clang-cl

clang-cl is Clang's MSVC-compatible driver. It accepts cl.exe-style flags and can replace cl.exe in most MSBuild/CMake projects.

REM Install: part of LLVM Windows release or VS "LLVM" component

REM Basic usage (MSVC-style flags)
clang-cl /O2 /std:c++17 /MD src.cpp /Fe:prog.exe

REM Pass Clang-native flags with /clang:
clang-cl /O2 /clang:-Rpass=inline src.cpp /Fe:prog.exe

REM Use in CMake
cmake -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl ..

Minimum Clang version for MSVC STL compatibility: Clang 8+. For C++20 features with MSVC STL: Clang 14+.

Source: <https://learn.microsoft.com/en-us/cpp/build/clang-support-msbuild>

5. PDB files and debugging

REM Compile with /Zi (external PDB) and /Fd (PDB name)
cl /Zi /Fd:prog.pdb /O2 src.cpp /link /DEBUG

REM /Z7: debug info embedded in .obj (no separate PDB for objects)
cl /Z7 /O2 src.cpp /link /DEBUG /PDB:prog.pdb

For WinDbg or VS debugger, ensure the PDB is alongside the executable or set the symbol path.

6. Common LNK errors

ErrorCauseFix
LNK2019: unresolved externalMissing .libAdd library in project settings or /link foo.lib
LNK2038: mismatch detected for 'RuntimeLibrary'Mixed /MT and /MDUnify all to /MD or /MT
LNK1104: cannot open file 'foo.lib'Library not in search pathAdd path via /LIBPATH: or LIB env var
LNK2005: already definedMultiple definitionsUse __declspec(selectany) or check for duplicate definitions
LNK4098: defaultlib 'LIBCMT' conflictsRuntime mismatchExplicitly pass /NODEFAULTLIB:LIBCMT or unify runtimes

7. Useful cl.exe flags

REM Preprocessed output
cl /P src.cpp       # produces src.i

REM Assembly output
cl /FA /O2 src.cpp  # produces src.asm (MASM syntax)
cl /FAs             # interleave source + asm

REM Show include files
cl /showIncludes src.cpp

REM Compiler version
cl /?  2>&1 | findstr /i "version"

For flag details, see references/flags.md.

Related skills

  • Use skills/compilers/clang for clang-cl's Clang-native diagnostics
  • Use skills/build-systems/cmake for CMake toolchain configuration on Windows
  • Use skills/debuggers/lldb or WinDbg for debugging MSVC-built binaries

Related skills

How it compares

Pick msvc-cl when the build target is Windows-native MSVC toolchains; use generic C++ or CMake skills for cross-platform GCC or Clang workflows.

FAQ

What does the msvc-cl skill help with?

The msvc-cl skill helps developers compile and link Windows-native C/C++ using MSVC cl and link, manage Windows SDK versions, configure PDB debug output, and set MSVC-specific flags for Visual Studio and headless CI agents.

When should I use msvc-cl instead of generic C++ advice?

Use msvc-cl when builds must run on Windows with MSVC cl.exe and link.exe, including SDK pinning, PDB generation, and linker flags that differ from GCC or Clang toolchains in CI pipelines.

CLI & Terminalbackenddevops

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.