Visual Studio Code Cmake



  1. Visual Studio Code Cmake
  2. Visual Studio Code Cmake Windows

I am used to writing C + + in Linux environment. Sometimes I switch to windows and want to continue working on the same project. It is always troublesome to reconfigure the environment. Although using visual studio to write c + + in windows only needs to double-click an icon, I still want to toss about the vs Code environment configuration. There are two main reasons: one is that various languages are written in vs code, so it is convenient to develop the same project on different platforms by using git synchronization code; the other is that graphical interface cannot be used in some cases, for example, visual studio, a graphical IDE, cannot be used to test windows environment when CI (continuous integration) is configured for GIT.

CMake Tools provides the native developer a full-featured, convenient, and powerful workflow for CMake-based projects in Visual Studio Code. Important doc links. CMake Tools quick start; Configure and build a project with CMake Presets; Configure a project with kits and variants; Build a project with kits and variants; Debug a project. CMake Tools for Visual Studio Code — CMake Tools 1.4.0 documentation CMake Tools for Visual Studio Code ¶ CMake Tools is an extension designed to make working with CMake-based projects as easy as possible. If you are new, check the Getting Started docs.

The environment and tool versions covered in this article are:

  • Windows 10
  • VS Code 1.45.0
  • C/C++(ms- vscode.cpptools )Plug in 0.28.0.insider3
  • CMake( twxs.cmake )Plug in 0.0.17
  • CMake Tools(ms- vscode.cmake -Tools) plug in 1.3.1
  • Visual Studio IntelliCode( visualstudioexptteam.vscodeintellicode )Plug in 1.2.7
  • Visual studio community 2019 (need to call the MSVC compiler provided by vs, as well as the corresponding header file and library file)
  • CMake 3.17.2
  • Ninja 1.10.0
  • Boost 1.73.0

primary coverage

1 create a C + + Project

2 install Visual Studio

3 install cmake and ninja

4 download and compile boost

Configure and build with CMake Presets in VS Code. CMake supports two files, CMakePresets.json and CMakeUserPresets.json, that allow users to specify common configure, build, and test options and share them with others.CMakePresets.json integration is available in cmake-tools version 1.7 and later. CMakePresets.json and CMakeUserPresets.json can be used to drive CMake in Visual Studio. To use MSVC from a command line or VS Code, you must run from a Developer Command Prompt for Visual Studio. An ordinary shell such as PowerShell, Bash, or the Windows command prompt does not have the necessary path environment variables set.

4.1 use of command prompt

4.2 compile boost

5 command line compilation and testing

6 configuration vs Code

6.1 settings.json

6.2 c_cpp_properties.json

6.3 tasks.json

6.4 launch.json

6.5 CMakeLists.txt

6.6 compilation, testing and debugging

Create a C + + Project

The installation process of vscode and plug-ins will not be introduced in this paper, but the file structure and code of the project will be given directly.

The project structure is as follows..vscodeThe three JSON files in the folder are used to configure vs code. The second folder contains the answer to a question about leetcode(solution.hppandsolution.cpp ), solution_test.cppUsed to perform unit tests. BottomCMakeLists.txtThe file is used to configure cmake and give the Compilation Rules of the project.

The C + + part of the code is given here, and the contents of other files will be given later.

Vs code cmake tools

solution.hpp

solution.cpp

solution_test.cpp

Install Visual Studio

The installation process of VS is not described here, but the components that need to be installed are just prompted.

It should be noted that the visual studio community 2019 preview version cannot be correctly recognized when compiling boost, and the official version needs to be installed. I have tried both versions of visual studio community 2017 / 2019. Take the 2019 version as an example.

Just install the “desktop development using C + +” set of components.

Installing cmake and Ninja

Cmake can be installed by downloading an installation package named cmake-3.17.2-win64-x64.msi. After Ninja is downloaded, there is only one executable file, which can be placed in a directory at will.

The installation process will not be detailed for the moment, just pay attention to setting the environment variables after the installation.

After setting the environment variables, you can reopen the command-line tool or terminal and check the versions of cmake and Ninja to see if the settings are successful.

Download and compile boost

Boost can be downloaded from this link: https://dl.bintray.com/boostorg/release/1.73.0/source/ And then unzip it to a directory.

Boost itself is header only, that is, in most cases, it can be called directly by including its header file. But for the convenience of linking our own program to the unit test module of boost( Boost.Test )Here you need to compile boost to generate static library files.

Use of command prompt

Since we have installed visual studio and the compiler tools and dependent libraries required for compiling C + + on Windows platform, we can directly use the environment provided by vs to compile boost.

Several command line tools can be found in the “Visual Studio 2019” directory of the start menu. We can open a command-line tool named “x64 native tools command prompt for vs 2019”. This icon corresponds to theC:Program Files (x86)Microsoft Visual Studio2019CommunityVCAuxiliaryBuildvcvars64.batThis script. The function of this script is to add the include path and library path of MSVC and windows SDK to environment variables, and then open a CMD command line. Therefore, all the dependencies needed to compile c + + can be detected directly during the running of this CMD.

We can try to type in this CMDSETTo view all the environment variables that are in effect.

We can also use normal information in PowerShell or C + +. The specific process will be introduced later.

The font of the default CMD is a little ugly. I’m used to opening a CMD terminal in Windows terminal, and then execute the following command:

> “C:Program Files (x86)Microsoft Visual Studio2019CommunityVCAuxiliaryBuildvcvars64.bat”

This allows our new terminals to detect the MSVC environment, as shown in the figure below.

Compile boost

then,cdGo to the root directory of boost and execute the following command:

After waiting for the compilation to complete, thebuildlibThere will be a lot of them in the catalog.libDocuments. We’ll only use themlibboost_unit_test_framework-vc142-mt-gd-x64-1_73.libThis is a document.

Of course, if you only want to compile the unit test module, you can use the following command:

Command line compilation and testing

Here we first compile the C + + project on the command line and run the unit tests.cdGo to the project directory and execute the following command:

On Windows platform, the generation tool can choose nmake provided by vs or ninja. Microsoft nmake is similar to the make tool of Linux platform. According to this video, ninja compiles faster than nmake.

As you can see, in thevcvars64.batIn the provided environment, cmake and Ninja installed by vs are used, and the version number is older than that of our own installation. Next, we describe how to configure the C + + compilation and test environment in vs code.

Configure vs Code

settings.json

Open the vs code settings, and clicksettings.jsonAdd the following lines to thevcvars64.batThe role of:

c_cpp_properties.json

The configuration of Linux and windows is given here.

tasks.json

The first twotaskThe first is to clear the build directory, the second is to configure cmake, and the third is to configure cmaketaskCmake is configured under windows.

launch.json

The first is on LinuxgdbDebugging, the second is under LinuxlldbDebugging, the third is in windows with MSVCcl.exeDebugging.

CMakeLists.txt

The cmake script is also cross platform, automatically identifies Linux or windows, and then executes the corresponding links.

Compile, test, and debug

Press the shortcut keyCtrl + Shift + PThen you can enter the different commands we defined earlier:

  • “Cmake: configure” – configure cmake
  • “Cmake: build” – compile project
  • “Cmake: run tests” – execute tests
  • “Tasks: run task → MSVC configure” – configure cmake by calling task

The effect of unit test is shown in the following figure:

The debugging effect is shown in the following figure:

The complete project code is on my GitHub: https://github.com/johnhany/leetcode 。 For the configuration of C + + development environment under Linux platform, please refer to “Ubuntu computer vision development environment configuration (Python / C + +)”.

summary

This article is about windows configuration vscode + cmake + ninja+ Boost.Test C + + development environment (tutorial details) of the article introduced here, more related vscode configuration C / C + + environment content, please search the previous articles of developeppaer or continue to browse the related articles below, I hope you will support developeppaer more in the future!

-->

CMake is a cross-platform, open-source tool for defining build processes that run on multiple platforms. This article assumes you're familiar with CMake. For more information about CMake, see the CMake documentation. The CMake tutorial is a good starting point to learn more.

Note

CMake has become more and more integrated with Visual Studio over the past few releases. 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.

The C++ CMake tools for Windows component uses the Open Folder feature to consume CMake project files (such as CMakeLists.txt) directly for the purposes of IntelliSense and browsing. Both Ninja and Visual Studio generators are supported. If you use a Visual Studio generator, it generates a temporary project file and passes it to msbuild.exe. However, the project is never loaded for IntelliSense or browsing purposes. You can also import an existing CMake cache.

Installation

C++ CMake tools for Windows is installed as part of the Desktop development with C++ and Linux Development with C++ workloads. For more information, see Cross-platform CMake projects.

For more information, see Install the C++ Linux workload in Visual Studio.

IDE Integration

When you choose File > Open > Folder to open a folder containing a CMakeLists.txt file, the following things happen:

  • Visual Studio adds CMake items to the Project menu, with commands for viewing and editing CMake scripts.

  • Solution Explorer displays the folder structure and files.

  • Visual Studio runs cmake.exe and generates the CMake cache file (CMakeCache.txt) for the default (x64 Debug) configuration. The CMake command line is displayed in the Output Window, along with additional output from CMake.

  • In the background, Visual Studio starts to index the source files to enable IntelliSense, browsing information, refactoring, and so on. As you work, Visual Studio monitors changes in the editor and also on disk to keep its index in sync with the sources.

You can open folders containing any number of CMake projects. Visual Studio detects and configures all the 'root' CMakeLists.txt files in your workspace. CMake operations (configure, build, debug), C++ IntelliSense, and browsing are available to all CMake projects in your workspace.

You can also view your projects organized logically by targets. Choose Targets view from the dropdown in the Solution Explorer toolbar:

Click the Show All Files button at the top of Solution Explorer to see all the CMake-generated output in the out/build/<config> folders.

Visual Studio uses a configuration file called CMakeSettings.json. This file lets you define and store multiple build configurations, and conveniently switch between them in the IDE. A configuration is a Visual Studio construct that encapsulates settings that are specific to a given build type. The settings are used to configure the default command-line options that Visual Studio passes to cmake.exe. You can also specify additional CMake options here, and define any additional variables you like. All options are written to the CMake cache either as internal or external variables. In Visual Studio 2019, the CMake Settings Editor provides a convenient way to edit your settings. For more information, see Customize CMake settings.

One setting, intelliSenseMode isn't passed to CMake, but is used only by Visual Studio.

Use the CMakeLists.txt file in each project folder just as you would in any CMake project. You can specify source files, find libraries, set compiler and linker options, and specify other build system-related information.

To pass arguments to an executable at debug time, you can use another file called launch.vs.json. In some scenarios, Visual Studio automatically generates these files. You can edit them manually, or even create the file yourself.

Note

For other kinds of Open Folder projects, two additional JSON files are used: CppProperties.json and tasks.vs.json. Neither of these are relevant for CMake projects.

Open an existing cache

When you open an existing CMake cache file (CMakeCache.txt), Visual Studio doesn't try to manage your cache and build tree for you. Your custom or preferred tools have complete control over how CMake configures your project. To open an existing cache in Visual Studio, choose File > Open > CMake. Then, navigate to an existing CMakeCache.txt file.

You can add an existing CMake cache to an open project. It's done the same way you'd add a new configuration. For more information, see our blog post on opening an existing cache in Visual Studio.

Building CMake projects

To build a CMake project, you have these choices:

  1. In the General toolbar, find the Configurations dropdown. It probably shows 'x64-Debug' by default. Select the preferred configuration and press F5, or click the Run (green triangle) button on the toolbar. The project automatically builds first, just like a Visual Studio solution.

  2. Right click on CMakeLists.txt and select Build from the context menu. If you have multiple targets in your folder structure, you can choose to build all or only one specific target.

  3. From the main menu, select Build > Build All (F7 or Ctrl+Shift+B). Make sure that a CMake target is already selected in the Startup Item dropdown in the General toolbar.

As you would expect, build results are shown in the Output Window and Error List.

In a folder with multiple build targets, you can specify which CMake target to build: Choose the Build item on the CMake menu or the CMakeLists.txt context menu to specify the target. If you enter Ctrl+Shift+B in a CMake project, it builds the current active document.

Debugging CMake projects

To debug a CMake project, choose the preferred configuration and press F5, or press the Run button in the toolbar. If the Run button says 'Select Startup Item', select the dropdown arrow. Choose the target that you want to run. (In a CMake project, the 'Current document' option is only valid for .cpp files.)

The Run or F5 commands first build the project if changes have been made since the previous build. Changes to CMakeSettings.json cause the CMake cache to be regenerated.

You can customize a CMake debugging session by setting properties in the launch.vs.json file. For more information, see Configure CMake debugging sessions.

Visual Studio Code Cmake

Just My Code for CMake projects

When you build for Windows using the MSVC compiler, CMake projects have support for Just My Code debugging. To change the Just My Code setting, go to Tools > Options > Debugging > General.

Visual Studio Code Cmake

Vcpkg integration

If you have installed vcpkg, CMake projects opened in Visual Studio automatically integrate the vcpkg toolchain file. That means no additional configuration is required to use vcpkg with your CMake projects. This support works for both local vcpkg installations and vcpkg installations on remote systems that you're targeting. This behavior is disabled automatically when you specify any other toolchain in your CMake Settings configuration.

Customize configuration feedback

By default, most configuration messages are suppressed unless there's an error. You can see all messages by enabling this feature in Tools > Options > CMake.

Editing CMakeLists.txt files

To edit a CMakeLists.txt file, right-click on the file in Solution Explorer and choose Open. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about CMakeLists.txt, see the CMake documentation.

As soon as you save the file, the configuration step automatically runs again and displays information in the Output window. Errors and warnings are shown in the Error List or Output window. Double-click on an error in the Error List to navigate to the offending line in CMakeLists.txt.

CMake configure step

When you make significant changes to the CMakeSettings.json or to CMakeLists.txt files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that's collected is available in C++ IntelliSense and language services. It's also used in build and debug operations.

Troubleshooting CMake cache errors

If you need more information about the state of the CMake cache to diagnose a problem, open the Project main menu or the CMakeLists.txt context menu in Solution Explorer to run one of these commands:

  • View Cache opens the CMakeCache.txt file from the build root folder in the editor. (Any edits you make here to CMakeCache.txt are wiped out if you clean the cache. To make changes that persist after the cache is cleaned, see Customize CMake settings.)

  • Open Cache Folder opens an Explorer window to the build root folder.

  • Clean Cache deletes the build root folder so that the next CMake configure step starts from a clean cache.

  • Generate Cache forces the generate step to run even if Visual Studio considers the environment up to date.

Automatic cache generation can be disabled in the Tools > Options > CMake > General dialog.

Run CMake from the command line

If you have installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps:

  1. Run the appropriate vsdevcmd.bat (x86/x64). For more information, see Building on the Command Line.

  2. Switch to your output folder.

  3. Run CMake to build/configure your app.

Visual Studio 2017 has rich support for CMake, including cross-platform CMake projects. The Visual C++ Tools for CMake component uses the Open Folder feature to enable the IDE to consume CMake project files (such as CMakeLists.txt) directly for the purposes of IntelliSense and browsing. Both Ninja and Visual Studio generators are supported. If you use a Visual Studio generator, it generates a temporary project file and passes it to msbuild.exe. However, the project is never loaded for IntelliSense or browsing purposes. You also can import an existing CMake cache.

Installation

Visual C++ Tools for CMake is installed as part of the Desktop development with C++ and Linux Development with C++ workloads.

For more information, see Install the C++ Linux workload in Visual Studio.

IDE integration

When you choose File > Open > Folder to open a folder containing a CMakeLists.txt file, the following things happen:

  • Visual Studio adds a CMake menu item to the main menu, with commands for viewing and editing CMake scripts.

  • Solution Explorer displays the folder structure and files.

  • Visual Studio runs CMake.exe and optionally generates the CMake cache for the default configuration, which is x86 Debug. The CMake command line is displayed in the Output Window, along with additional output from CMake.

  • In the background, Visual Studio starts to index the source files to enable IntelliSense, browsing information, refactoring, and so on. As you work, Visual Studio monitors changes in the editor and also on disk to keep its index in sync with the sources.

You can open folders containing any number of CMake projects. Visual Studio detects and configures all the 'root' CMakeLists.txt files in your workspace. CMake operations (configure, build, debug), C++ IntelliSense, and browsing are available to all CMake projects in your workspace.

You can also view your projects organized logically by targets. Choose Targets view from the dropdown in the Solution Explorer toolbar:

Visual Studio uses a file called CMakeSettings.json to store environment variables or command-line options for Cmake.exe. CMakeSettings.json also enables you to define and store multiple CMake build configurations. You can conveniently switch between them in the IDE.

Otherwise, use the CMakeLists.txt just as you would in any CMake project to specify source files, find libraries, set compiler and linker options, and specify other build system-related information.

If you need to pass arguments to an executable at debug time, you can use another file called launch.vs.json. In some scenarios, Visual Studio automatically generates these files. You can edit them manually, or even create the file yourself.

Visual studio code cmake settings

Note

For other kinds of Open Folder projects, two additional JSON files are used: CppProperties.json and tasks.vs.json. Neither of these are relevant for CMake projects.

Import an existing cache

When you import an existing CMakeCache.txt file, Visual Studio automatically extracts customized variables and creates a pre-populated CMakeSettings.json file based on them. The original cache isn't modified in any way. It can still be used from the command line, or with whatever tool or IDE used to generate it. The new CMakeSettings.json file is placed alongside the project's root CMakeLists.txt. Visual Studio generates a new cache based the settings file. You can override automatic cache generation in the Tools > Options > CMake > General dialog.

Not everything in the cache is imported. Properties such as the generator and the location of the compilers are replaced with defaults that are known to work well with the IDE.

Cmake

To import an existing cache

  1. From the main menu, choose File > Open > CMake:

    This command brings up the Import CMake from Cache wizard.

  2. Navigate to the CMakeCache.txt file that you want to import, and then click OK. The Import CMake Project from Cache wizard appears:

    When the wizard completes, you can see the new CMakeCache.txt file in Solution Explorer next to the root CMakeLists.txt file in your project.

Building CMake projects

To build a CMake project, you have these choices:

  1. In the General toolbar, find the Configurations dropdown. It's probably showing 'Linux-Debug' or 'x64-Debug' by default. Select the preferred configuration and press F5, or click the Run (green triangle) button on the toolbar. The project automatically builds first, just like a Visual Studio solution.

  2. Right click on the CMakeLists.txt and select Build from the context menu. If you have multiple targets in your folder structure, you can choose to build all or only one specific target.

  3. From the main menu, select Build > Build Solution (F7 or Ctrl+Shift+B). Make sure that a CMake target is already selected in the Startup Item dropdown in the General toolbar.

You can customize build configurations, environment variables, command-line arguments, and other settings in the CMakeSettings.json file. It lets you make changes without modifying the CMakeLists.txt file. For more information, see Customize CMake settings.

As you would expect, build results are shown in the Output Window and Error List.

In a folder with multiple build targets, you can specify which CMake target to build: Choose the Build item on the CMake menu or the CMakeLists.txt context menu to specify the target. If you enter Ctrl+Shift+B in a CMake project, it builds the current active document.

Debugging CMake projects

To debug a CMake project, choose the preferred configuration and press F5. Or, press the Run button in the toolbar. If the Run button says 'Select Startup Item', select the dropdown arrow and choose the target that you want to run. (In a CMake project, the 'Current document' option is only valid for .cpp files.)

The Run or F5 commands first build the project if changes have been made since the previous build.

You can customize a CMake debugging session by setting properties in the launch.vs.json file. For more information, see Configure CMake debugging sessions.

Editing CMakeLists.txt files

To edit a CMakeLists.txt file, right-click on the file in Solution Explorer and choose Open. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about CMakeLists.txt, see the CMake documentation.

As soon as you save the file, the configuration step automatically runs again and displays information in the Output window. Errors and warnings are shown in the Error List or Output window. Double-click on an error in the Error List to navigate to the offending line in CMakeLists.txt.

CMake configure step

When significant changes are made to the CMakeSettings.json or to CMakeLists.txt files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that's collected is available in C++ IntelliSense and language services. It's also used in build and debug operations.

Multiple CMake projects may use the same CMake configuration name (for example, x86-Debug). All of them are configured and built (in their own build root folder) when that configuration is selected. You can debug the targets from all of the CMake projects that participate in that CMake configuration.

You can limit builds and debug sessions to a subset of the projects in the workspace. Create a new configuration with a unique name in the CMakeSettings.json file. Then, apply the configuration to those projects only. When that configuration is selected, IntelliSense and the build and debug commands only apply to those specified projects.

Troubleshooting CMake cache errors

If you need more information about the state of the CMake cache to diagnose a problem, open the CMake main menu or the CMakeLists.txt context menu in Solution Explorer to run one of these commands:

  • View Cache opens the CMakeCache.txt file from the build root folder in the editor. (Any edits you make here to CMakeCache.txt are wiped out if you clean the cache. To make changes that persist after the cache is cleaned, see Customize CMake settings.)

  • Open Cache Folder opens an Explorer window to the build root folder.

  • Clean Cache deletes the build root folder so that the next CMake configure step starts from a clean cache.

  • Generate Cache forces the generate step to run even if Visual Studio considers the environment up to date.

Automatic cache generation can be disabled in the Tools > Options > CMake > General dialog.

Single file compilation

To build a single file in a CMake project, right-click on the file in Solution Explorer. Choose Compile from the pop-up menu. You can also build the currently open file in the editor by using the main CMake menu:

Run CMake from the command line

If you have installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps:

  1. Run the appropriate vsdevcmd.bat (x86/x64). For more information, see Building on the command line .

  2. Switch to your output folder.

  3. Run CMake to build/configure your app.

In Visual Studio 2015, Visual Studio users can use a CMake generator to generate MSBuild project files, which the IDE then consumes for IntelliSense, browsing, and compilation.

See also

Visual Studio Code Cmake Windows

Tutorial: Create C++ cross-platform projects in Visual Studio
Configure a Linux CMake project
Connect to your remote Linux computer
Customize CMake build settings
CMakeSettings.json schema reference
Configure CMake debugging sessions
Deploy, run, and debug your Linux project
CMake predefined configuration reference