Integrating Visual Studio compiler tools with Visual Studio Code is a really powerful solution for developing and debugging C/C++ code.
Assuming you have installed Visual Studio Code and Visual Studio compiler tools then before continuing I highly recommend installing the C/C++ for Visual Studio Code extension.
Here are the steps I have for the integration process:
Enable a "VS 2019 Community Prompt Here" integration with Explorer. I've based my solution on Daniel Cazzulino's excellent CommandPromptHere solution that is available here: https://github.com/kzu/CommandPromptHere.
This supports x86 compiler configuration by default so I've modified it slightly to enable x64 compilation and called the file "VS201964BitComCmdHere.inf"
;
; "CMD Prompt Here" PowerToy
;
; Copyright 1996 Microsoft Corporation
[version]
signature="$CHICAGO$"
[DefaultInstall]
CopyFiles = VS2019ComCmdHere.Files.Inf
AddReg = VS2019ComCmdHere.Reg
[DefaultUnInstall]
DelFiles = VS2019ComCmdHere.Files.Inf
DelReg = VS2019ComCmdHereUninstall.Reg
[SourceDisksNames]
55="%VS2019ComCmdHereName%","",1
[SourceDisksFiles]
vs2019cmdhere-enterprise.inf=55
[DestinationDirs]
VS2019ComCmdHere.Files.Inf = 17
[VS2019ComCmdHere.Files.Inf]
VS2019ComCmdHere.INF
[VS2019ComCmdHere.Reg]
HKLM,%UDHERE%,DisplayName,,"%VS2019ComCmdHereName%"
HKLM,%UDHERE%,UninstallString,,"rundll32.exe syssetup.dll,SetupInfObjectInstallAction DefaultUnInstall 132 %17%\VS2019ComCmdHere.inf"
HKCR,Directory\Background\Shell\VS2019ComCmdHere,,,"%VS2019ComCmdHereAccel%"
HKCR,Directory\Background\Shell\VS2019ComCmdHere\command,,,"cmd.exe /k call ""C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"" && pushd ""%V"""
HKCR,Directory\Shell\VS2019ComCmdHere,,,"%VS2019ComCmdHereAccel%"
HKCR,Directory\Shell\VS2019ComCmdHere\command,,,"cmd.exe /k call ""C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"" && pushd ""%V"""
HKCR,Drive\Shell\VS2019ComCmdHere,,,"%VS2019ComCmdHereAccel%"
HKCR,Drive\Shell\VS2019ComCmdHere\command,,,"cmd.exe /k call ""C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"" && pushd ""%1"""
[VS2019ComCmdHereUninstall.Reg]
HKLM,%UDHERE%
HKCR,Directory\Shell\VS2019ComCmdHere
HKCR,Drive\Shell\VS2019ComCmdHere
HKCR,Directory\Background\Shell\VS2019ComCmdHere
[Strings]
VS2019ComCmdHereName="Developer Command Prompt Here for VS2019 Community"
VS2019ComCmdHereAccel="VS 2019 Community Prompt"
UDHERE="Software\Microsoft\Windows\CurrentVersion\Uninstall\VS2019ComCmdHere"
To use VS Code with Visual Studio, in the project folder you need to create a .vscode/launch.json file:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "cl.exe - Build and debug active file",
"type": "cppvsdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"console": "externalTerminal",
//"console": "internalConsole",
"preLaunchTask": "C/C++: cl.exe build active file"
}
]
}
and a .vscode/tasks.json file:
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: cl.exe build active file",
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/nologo",
"-W4",
"-D" "_CRT_SECURE_NO_WARNINGS=1",
"/Fe:",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}",
"gnuplot_c.lib"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$msCompile"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "compiler: cl.exe"
}
]
}
Now open VSCode and open the project folder: File | Open Folder ...
Save the workspace: File | Save Workspace As ...
Close VSCode
Now to use VSCode with Visual Studio, right click on the project folder in Explorer and choose: "VS2019 Community Prompt"
Type the following:
code workspace.code-workspace
You can now compile and debug your application, with full break point and single stepping support.