Visualize your code with syntax colorization, guidelines, code tooltips, Class View, or Call Hierarchy. Navigate to any code symbol by reference, definition, declaration, and more. Autocomplete your code as you type, quickly repair problems, and refactor your code to. 1 day ago c visual-studio-code. Improve this question. Follow asked 1 hour ago. 1 2 2 bronze badges. New contributor. Matey is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct. Visual Studio Code is a lightweight, cross-platform development environment that runs on Windows, Mac, and Linux systems. The Microsoft C/C for Visual Studio Code extension supports IntelliSense, debugging, code formatting, auto-completion. Visual Studio Code C/C/Fortran with Multiple Source Files Visual Studio Code is a free source-code editor made by Microsoft for Windows, Linux and macOS. Features include support for debugging, syntax highlighting, intelligent code completion, snippets, code refactoring, and embedded Git.
First written on 2020-09-11.
Last updated on 2021-01-02.
In this article and several more, I will be discussing developing a very simple C++ library and application using CMake and Visual Studio Code. I will also use git and Google Test, and port the project from Windows to Linux. Most of the information is applicable to using almost any IDE, or indeed, no IDE at all.
Why Use CMake?
CMake is a powerful and robust build system. You specify what you want done, not how to do it. CMake then takes that information and generates the files needed to build the system. For example, CMake can generate solution (.sln) and project files (.vcxproj) that Visual Studio and Visual Studio Code use on Windows. Similar capabilities are available for every other popular IDE. It can even create make files if you want to do everything from the command line. Because it can be called from the command line, it integrates well with continuous integration/continuous build systems.
You can specify the build tools that you want to use; for example, you can use MSVC or LLVM on Windows, and gnu or LLVM on Unix-like systems, including Linux, OSX, and MSYS or MinGW. Aside from specifying the tools to use, no other changes are required to the CMake specification files. You will see this when I port my project from Windows using the Visual Studio build tools to Linux using the gnu build tools.
With CMake, you can download, build, and use a large number of tools. I will show one example of this when I use Google Test in this project. Just about any tool that can be downloaded from the internet, and which provides CMake files for building, can be used.
Installing the Needed Tools
I will start the project on Windows using VS Code and the Visual Studio Build Tools, but if you wish, you can start with a different IDE, or even a different operating system. In a later article, I will discuss using the gnu tools on Linux (Ubuntu).
So let’s begin.
Installing Visual Studio Code and Extensions
On Windows, the latest version of Visual Studio Code is available on its download page. Select the appropriate version; click on the Windows button for the x64 version, or one of the ARM links for ARM if that is applicable to you. The download will begin. When it is completed, run the downloaded file.
Next, we need two VSCode extensions. Start VS Code and display the extensions panel (select View → Extensions from the main menu). In the search box, enter C++
. A number of C and C++ extensions are displayed. You want the one called C++. Make sure it is from Microsoft. This extension provides Intellisense, debugging, and browsing capabilities. Click on the Install button to install it.
The second extension is CMake Tools. Search for and install it.
Installing Visual Studio Build Tools
We need the build tools provided by Visual Studio. Don’t worry, we aren’t installing Visual Studio, just the build tools.
On the Visual Studio downloads page, move down into the All Downloads section. As I write this, the current version of Visual Studio is 2019, so I will be referring to it in this section. If a later version is available, use that instead. Select Tools for Visual Studio 2019. Click on the Download button for Build Tools for Visual Studio 2019. Download and save the file. When the download has completed, open the file. This starts Visual Studio Installer. Again, don’t worry, we are not installing Visual Studio, just the build tools. When the installer window opens select only the build tools. After some time (several minutes), the install will complete. Close the installer.
Open the Windows Start menu and start Developer Command Prompt for VS 2019; do not open the standard command prompt or Powershell. At the command prompt, enter:
The following should be displayed, although the version number may be different:
If the message says that it cannot find CMake, then the build tools did not install correctly.
You will almost always be starting VS Code from the command line of Developer Command Prompt, so you will probably want to add it to the Productivity section of the Start menu.
Installing Git
We will need git. If you have done any development work, you probably already have it installed. If not, Git for Windows is available here.
A Simple C++ Program With Library
We will start by creating a simple C++ program with a simple library. You can perform similar steps, with slight modifications, if you are on Linux or any other Unix-like system. To support the program, we will create a directory structure and start VS Code as follows:
Open a Developer Command Prompt. Enter:
In the Explorer list in VS Code, select the hello/include directory and create a new file called hello.h. Place the following code in that file and save it:
Again in the Explorer list, select hello/src and create a new file called hello.cpp. Place the following code in that file and save it:
That is all the code we need for our library. Now create the program to use the library. In the Explorer list, select the apps directory and create a new file called main.cpp. Place the following code in that file and save it:
To build the library and program, we will use CMake. There are many examples of CMake on the internet, many of which are outdated or just plain bad. For this program and library, I am following Modern CMake by Henry Schreiner and others.
In the Explorer list, select VSCODE-CMAKE-HELLO in VS Code and create a new file. Call it CMakeLists.txt. Enter the following and save the file:
In the Explorer list, select apps and create a new file. Call it CMakeLists.txt. Enter the following and save the file:
Create a file called CMakeLists.txt in the hello directory and place the following code in it:
Using CMake With Visual Studio Code
Look at the status bar on the VS Code window. If it looks similar to this:
then terminate and restart VS Code. The status bar should now look like this:
From left to right, master*
indicates that you are editing the git master branch and that changes have been made. The symbols and 0s indicate that there are currently no errors in workspace. Next is a button that will run CMake (CMake: [Debug]
). No Kit Selected
indicates that the build tools have not yet been selected; we will get to them in a moment. Following that is a Build
button, the default target, a bug button that will run the application in debug mode, and a button that will run the application without starting the debugger. The remainder of the status bar provides other information that we are not currently concerned with.
We first have to run CMake to create the build files. Click on the CMake: [Debug]
button. The first time you do so, a list of build tool kits is displayed below the main menu. Select either Unspecified
, or Visual Studio Build Tools 2019 Release - amd64
. The No Kit Selected
text in the status bar will change to [Visual Studio Build Tools 2019 Release - amd64]
, and a list of CMake configurations are displayed: Debug
, Release
, MinSizeRel
, and RelWithDebInfo
.
Select Debug
. This will execute CMake and generate a Visual Studio solution file (.sln
) and Visual Studio project files (.vcxproj
) if there are no errors. If there are errors, then something is not right with the CMakeLists.txt files or the C++ source files.
If you selected any of the other CMake actions, the executable, library, and debug related files would be placed in other subdirectories. For example, if you build release versions, they will be placed in build/Release
.
The first time you run debugging by either clicking on the Bug
button, or by selecting Run → Start Debugging
, a list of build environments will be displayed just below the main menu. Select C++ (Windows)
.
To do a clean and rebuild, all we have to do is delete the build directory and all of its contents, then run CMake
and Build
.
Debugging
After a debug build, you can debug main.exe by clicking on the bug button in the status bar. Alternatively, you can select Run → Start Debugging
from the main menu. In the latter case, the first time you do this, a list of debug environments is displayed. Select C++ (Windows)
. If the active file in VS Code is a C++ source file, a list of configurations is then displayed. You can select either cl.exe - Build and debug active file
or Default configuration
. If a different type of file is active, such as CMakeLists.txt, then the configuration list is not displayed.
In either case, a file called launch.json is added to the .vscode directory. Open that file and change the program to ${workspaceFolder}/build/apps/Debug/main.exe
Now you can run debug from either the bug button or the menu item.
Summary and What’s Next
This article discussed how to create a C++ project containing a program called main and a library called hello with Visual Studio Code using CMake. How to debug the program is also discussed.
There is still much to do, but that will be discussed in the following articles:
- Adding GoogleTest to the project.
UPDATES
The code in hello.cpp was updated to correct a typo. Thanks Vlad T. for pointing that out.
-->Note
This developer documentation applies to Visual Studio 2019. To see the documentation for your preferred version of Visual Studio, use the Version selector control. It's found at the top of the table of contents on this page.
If you're looking for a Microsoft Visual C++ 2019 redistributable package so that you can run a program, go to the Microsoft Visual Studio site's Downloads page. Under All Downloads, expand the Other Tools, Frameworks, and Redistributables section. Select your target architecture, then choose the Download button.
For older redistributables, open the Older downloads page. Expand the Other Tools, Frameworks, and Redistributables section. Find the redistributable version you want to download, select your target architecture, then choose the Download button.
Note
This developer documentation applies to Visual Studio 2017. To see the documentation for your preferred version of Visual Studio, use the Version selector control. It's found at the top of the table of contents on this page.
If you're looking for a Microsoft Visual C++ 2017 or older redistributable package so that you can run a program, go to the Microsoft Visual Studio site's Older downloads page. Expand the Other Tools, Frameworks, and Redistributables section. Find the redistributable version you want to download, select your target architecture, then choose the Download button.
Note
This developer documentation applies to Visual Studio 2015. To see the documentation for your preferred version of Visual Studio, use the Version selector control. It's found at the top of the table of contents on this page.
If you're looking for a Microsoft Visual C++ 2015 or older redistributable package so that you can run a program, go to the Microsoft Visual Studio site's Older downloads page. Expand the Other Tools, Frameworks, and Redistributables section. Find the redistributable version you want to download, select your target architecture, then choose the Download button.
Microsoft Visual C++ (MSVC) refers to the C++, C, and assembly language development tools and libraries available as part of Visual Studio on Windows. These tools and libraries let you create Universal Windows Platform (UWP) apps, native Windows desktop and server applications, cross-platform libraries and apps that run on Windows, Linux, Android, and iOS, as well as managed apps and libraries that use the .NET Framework. You can use MSVC to write anything from simple console apps to the most sophisticated and complex apps for Windows desktop, from device drivers and operating system components to cross-platform games for mobile devices, and from the smallest IoT devices to multi-server high performance computing in the Azure cloud.
Visual Studio 2015, 2017 and 2019 can be installed side-by-side. You can use Visual Studio 2019 (compiler toolset v142) or Visual Studio 2017 (v141) to edit and build programs using the toolset from Visual Studio 2017 (v141) and Visual Studio 2015 (v140).
What's New and Conformance History
What's New for C++ in Visual Studio
Find out what's new in Visual Studio.
What's New for C++ in Visual Studio 2003 through 2015
Find out what was new in C++ for each version of Visual Studio from 2003 through 2015.
C++ conformance improvements in Visual Studio
Learn about C++ conformance improvements in Visual Studio.
Microsoft C++ language conformance table
A list of conformance status by feature in the MSVC C++ compiler.
Microsoft C/C++ change history 2003 - 2015
Learn about the breaking changes in previous versions.
Install Visual Studio and upgrade from earlier versions
Install C++ support in Visual Studio
Download Visual Studio and install the Microsoft C/C++ toolset.
Microsoft C++ porting and upgrading guide
Guidance for porting code and upgrading projects to Visual Studio 2015 or later to take advantage of greater compiler conformance to the C++ standard as well as greatly improved compilation times and security features such as Spectre mitigation.
C++ tools and features in Visual Studio editions
Find out about different Visual Studio editions.
Supported platforms
Find out which platforms the Microsoft C/C++ compiler supports.
Learn C++
Welcome back to C++
Learn more about modern C++ programming techniques based on C++11 and later that enable you to write fast, safe code and avoid many of the pitfalls of C-style programming.
Standard C++
Learn about C++, get an overview of Modern C++, and find links to books, articles, talks, and events
Learn Visual Studio and make your first C++ project
Start learning how to write C++ in Visual Studio.
Visual Studio C++ samples
Information about the C++ code samples provided by Microsoft.
C++ development tools
Overview of C++ development in Visual Studio
How to use the Visual Studio IDE to create projects, edit code, link to libraries, compile, debug, create unit tests, do static analysis, deploy, and more.
Projects and build systems
How to create and configure Visual Studio C++ projects, CMake projects, and other kinds of projects with MSVC compiler and linker options.
Writing and refactoring C++ code
How to use the productivity features in the C++ editor to refactor, navigate, understand and write code.
Debugging native code
Use the Visual Studio debugger with C++ projects.
Code analysis for C/C++ overview
Use SAL annotations or the C++ Core Guidelines checkers to perform static analysis.
Write unit tests for C/C++ in Visual Studio
Create unit tests using the Microsoft Unit Testing Framework for C++, Google Test, Boost.Test, or CTest.
Write applications in C++
Universal Windows Apps (C++)
Find guides and reference content on the Windows Developer Center. For information about developing UWP apps, see Intro to the Universal Windows Platform and Create your first UWP app using C++.
Desktop applications (C++)
Learn how to create traditional native C++ desktop applications for Windows.
.NET programming with C++/CLI
Learn how to create DLLs that enable interoperability between native C++ and .NET programs written in languages such as C# or Visual Basic.
Linux programming
Use the Visual Studio IDE to code and deploy to a remote Linux machine for compilation with GCC.
Create C/C++ DLLs in Visual Studio
Find out how to use Win32, ATL, and MFC to create Windows desktop DLLs, and provides information about how to compile and register your DLL.
Parallel programming
Learn how to use the Parallel Patterns Library, C++ AMP, OpenMP, and other features that are related to multithreading on Windows.
Security best practices
Learn how to protect applications from malicious code and unauthorized use.
Cloud and web programming
In C++, you have several options for connecting to the web and the cloud.
Data access
Connect to databases using ODBC and OLE DB.
Text and strings
Learn about working with different text and string formats and encodings for local and international development.
Languages reference
C++ language reference
The reference guide to the Microsoft implementation of the C++ programming language.
C/C++ preprocessor reference
A common reference to the shared C and C++ language preprocessor.
C language reference
The reference guide to the Microsoft implementation of the C programming language.
Compiler intrinsics and assembly language
Guides to the compiler intrinsics supported or implemented by the Microsoft C/C++ compilers on each platform.
C++ Libraries in Visual Studio
The following sections provide information about the different C and C++ libraries that are included in Visual Studio.
C runtime library reference
Includes security-enhanced alternatives to functions that are known to pose security issues.
C++ standard library
The C++ Standard Library.
Active Template Library (ATL)
Support for COM components and apps.
Microsoft Foundation Class (MFC) libraries
Support for creating desktop apps that have traditional or Office-style user interfaces.
Parallel Patterns Library (PPL)
Asynchronous and parallel algorithms that execute on the CPU.
C++ AMP (C++ Accelerated Massive Parallelism)
Massively parallel algorithms that execute on the GPU.
Windows Runtime Template Library (WRL)
Universal Windows Platform (UWP) apps and components.
.NET programming with C++/CLI
Programming for the common language runtime (CLR).
Third-party open source C++ libraries
The cross-platform vcpkg command-line tool greatly simplifies the discovery and installation of over 900 C++ open source libraries. See vcpkg: C++ Package Manager for Windows.
Feedback and community
Microsoft Docs Q&A
Microsoft Docs hosts searchable forums for questions and answers. Add a C++
tag to your post for community assistance on C++-related issues.
How to report a problem with the Microsoft C/C++ toolset
Learn how to create effective error reports against the Microsoft C/C++ toolset (compiler, linker, and other tools), and ways to submit your report.
Visual Studio Code C++ Examples
Microsoft C++ Team Blog
Learn more about new features and the latest information from the developers of the C++ tools in Visual Studio.
C++ Visual Studio Code Debug
Visual Studio C++ Developer Community
Get help, file bugs, and make suggestions for C++ in Visual Studio.