{"id":18021250,"url":"https://github.com/ho-cooh/cppdevonwindows","last_synced_at":"2025-04-09T14:15:48.869Z","repository":{"id":41311312,"uuid":"314475102","full_name":"HO-COOH/CPPDevOnWindows","owner":"HO-COOH","description":"Best guide to setup C/C++ development environment on Windows","archived":false,"fork":false,"pushed_at":"2024-09-02T16:10:18.000Z","size":12000,"stargazers_count":223,"open_issues_count":0,"forks_count":15,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-02T08:48:02.044Z","etag":null,"topics":["c","clang","clion","cmake","cpp","doxygen","gcc","msvc","msys2","vcpkg","visual-studio","vscode","windows"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HO-COOH.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-20T07:12:37.000Z","updated_at":"2025-03-30T17:47:22.000Z","dependencies_parsed_at":"2024-11-07T17:50:41.923Z","dependency_job_id":null,"html_url":"https://github.com/HO-COOH/CPPDevOnWindows","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HO-COOH%2FCPPDevOnWindows","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HO-COOH%2FCPPDevOnWindows/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HO-COOH%2FCPPDevOnWindows/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HO-COOH%2FCPPDevOnWindows/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HO-COOH","download_url":"https://codeload.github.com/HO-COOH/CPPDevOnWindows/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248054194,"owners_count":21039952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","clang","clion","cmake","cpp","doxygen","gcc","msvc","msys2","vcpkg","visual-studio","vscode","windows"],"created_at":"2024-10-30T06:09:13.443Z","updated_at":"2025-04-09T14:15:48.850Z","avatar_url":"https://github.com/HO-COOH.png","language":null,"readme":"# The definitive guide of setting up C/C++ development environment on Windows\nI know a lot of you are having troubles of getting it to work on Windows and complaining a shiton. \nI will admit, that most C++ programming books do NOT actually tell you how to set things up. \nAnd I think that's hilarious, because how are you supposed to program without a working development environment? \nAlthough some books do mention it, they usually target Unix operating systems. \n\nYou can just use [Visual Studio](https://visualstudio.microsoft.com/), which is the best and beginner-friendly solution and has really good documentation from Microsoft, but for some reason you are just a boomer and don't want to use it and you are dumb to set up the alternatives.\n\nNow, you have found the right guide! \nThis guide aims to provide the fullest list of every possible main-stream IDEs/text editors you might want to use and its respective configuration on Windows.\n\n**Follow the guide and screenshot carefully.** \nThe screenshot are from Windows Sandbox, which is a clean install of Windows 10. \n**If you followed everything, and can't get it work, open an issue. Let me see how that's even possible!!** \n\nA visual summary of this guide:\n```mermaid\nflowchart TD\n    A[Start]\n    A--\u003eCompiler{Compiler}\n    A--\u003eVisualStudio\n    Compiler--\u003eMSYS2{MSYS2}\n    MSYS2---\u003eGCC\n    MSYS2---\u003eClang\n    Compiler--\u003eMSVC\n\n    GCC--\u003eCMake\n    Clang--\u003eCMake\n    MSVC--\u003eCMake\n\n    CMake--\u003eIDE{IDE}\n    IDE--\u003eVisualStudio\n    IDE--\u003eQtCreator\n    IDE--\u003eCLion\n\n    CMake--\u003eEditor{Text Editor}\n    Editor--\u003eVim\n    Editor--\u003eVSCode[Visual Studio Code]\n    \n    GTest[Google test \u0026 Doxygen]-. integrate .-\u003eVisualStudio\n    GTest[Google test \u0026 Doxygen]-. integrate .-\u003eVSCode\n    GTest[Google test \u0026 Doxygen]-. integrate .-\u003eCLion\n    GTest[Google test \u0026 Doxygen]-. integrate .-\u003eCMake\n\n    subgraph tooling\n    Additional[Additional tooling]---ReSharper\n    Additional---ClangTidy\n    Additional---ClangFormat\n    Additional---Incredibuild\n    end\n```\n\n- [The definitive guide of setting up C/C++ development environment on Windows](#the-definitive-guide-of-setting-up-cc-development-environment-on-windows)\n  - [Setting up development environment](#setting-up-development-environment)\n    - [Download \\\u0026 Install a C++ compiler](#download--install-a-c-compiler)\n      - [GCC \\\u0026 Clang](#gcc--clang)\n        - [Download \\\u0026 Install MSYS2](#download--install-msys2)\n        - [Install GCC](#install-gcc)\n        - [Install Clang](#install-clang)\n        - [What is MSYS2 and Why?](#what-is-msys2-and-why)\n        - [What's the difference between `/usr/bin` and `/mingw64/bin`](#whats-the-difference-between-usrbin-and-mingw64bin)\n      - [MSVC](#msvc)\n    - [Download \\\u0026 Install CMake](#download--install-cmake)\n      - [What is CMake and Why?](#what-is-cmake-and-why)\n    - [IDEs](#ides)\n      - [Setting up CLion](#setting-up-clion)\n      - [Setting up QT creator](#setting-up-qt-creator)\n      - [Setting up Visual Studio](#setting-up-visual-studio)\n        - [Full package](#full-package)\n        - [Standalone IDE](#standalone-ide)\n    - [Text editors](#text-editors)\n      - [Setting up VSCode](#setting-up-vscode)\n      - [Setting up Vim](#setting-up-vim)\n        - [Using MSYS2](#using-msys2)\n        - [Standalone](#standalone)\n        - [Optional plugins](#optional-plugins)\n  - [Debugging](#debugging)\n    - [Debugging in VSCode](#debugging-in-vscode)\n    - [Debugging in CLion](#debugging-in-clion)\n    - [Debugging in Visual Studio](#debugging-in-visual-studio)\n    - [Debugging in QT](#debugging-in-qt)\n  - [Using libraries](#using-libraries)\n    - [Setting up vcpkg](#setting-up-vcpkg)\n    - [Finding and Installing a library](#finding-and-installing-a-library)\n    - [Using a library](#using-a-library)\n  - [Unit Testing](#unit-testing)\n    - [Google Test](#google-test)\n      - [Integration with Visual Studio](#integration-with-visual-studio)\n      - [Integration with CLion](#integration-with-clion)\n      - [Integration with VSCode](#integration-with-vscode)\n    - [Microsoft Unit Test](#microsoft-unit-test)\n    - [CTest](#ctest)\n  - [Documentation](#documentation)\n    - [Setting up doxygen](#setting-up-doxygen)\n    - [Integrate doxygen with CMake](#integrate-doxygen-with-cmake)\n  - [Source control](#source-control)\n  - [Setting up a system-wide package manager](#setting-up-a-system-wide-package-manager)\n    - [Winget](#winget)\n    - [Chocolatey](#chocolatey)\n    - [Scoop](#scoop)\n  - [Setting up WSL](#setting-up-wsl)\n  - [Addtional Tooling](#addtional-tooling)\n    - [Resharper](#resharper)\n    - [Clang-tidy](#clang-tidy)\n      - [Integration with Visual Studio](#integration-with-visual-studio-1)\n        - [MSBuild Project](#msbuild-project)\n        - [CMake Project](#cmake-project)\n      - [Integration with CLion](#integration-with-clion-1)\n      - [Integration with VSCode](#integration-with-vscode-1)\n    - [ClangFormat](#clangformat)\n      - [Integration with Visual Studio](#integration-with-visual-studio-2)\n      - [Integration with VSCode](#integration-with-vscode-2)\n    - [Incredibuild](#incredibuild)\n    - [C/C++ include guard (proud contributor)](#cc-include-guard-proud-contributor)\n    - [include-info (proud maker)](#include-info-proud-maker)\n    - [VSCode Font switcher (proud contributor)](#vscode-font-switcher-proud-contributor)\n---\n\n## Setting up development environment\nThis section describes the steps to \n1. [Download \u0026 Install a C++ compiler](#download--install-a-c-compiler)\n2. [Download \u0026 Install CMake](#download--install-cmake)\n3. [Download \u0026 Install an IDE/text editor](#ides)\n4. Create a project in various IDEs/text editors and start writing code\n\n### Download \u0026 Install a C++ compiler\n\n![](screenshots/JBstats/Compilers.png)\n\nThis guide will cover the installation of `GCC`, `Clang` and `MSVC`.\n\n#### GCC \u0026 Clang\n##### Download \u0026 Install MSYS2\n[Download here](https://www.msys2.org/)\n\nJust launch the installer and keep clicking \"Next\"\n\n##### Install GCC\nIf you also want to install `clang`, skip this part and go directly to [Install Clang](#install-clang),  because GCC is a dependency of Clang (on MSYS2) and will be automatically installed when you install clang.\n\n1. Run MSYS2, type the following command:\n```\npacman -Syu\n```\n`pacman` is the package manager used by MSYS2. `-S` means \"sync\". `-y` means \"download fresh package databases from the server\". `-u` means \"upgrade installed packages\". \n\nThis command will update the packages info, so you get the latest packages. It will prompt you like this, and you type ``y`` and hit enter.\n![](./screenshots/Compiler/MSYS2/1.png)\n\n1. Then it will prompt you `` To complete this update all MSYS2 processes including this terminal will be closed. Confirm to proceed [Y/n]``, type `y` and hit enter, and it will close the window after the update is done.\n2. Relaunch MSYS2 from your start menu. Type:\n```\npacman -S mingw-w64-x86_64-gcc\n```\nlike this, type `y` and hit enter to install gcc\n![](screenshots/Compiler/MSYS2/2.png)\n\nAnd then type:\n```\npacman -S mingw-w64-x86_64-make\n```\nAnd type `y` to also install ``make``.\n\nAnd then type:\n```\npacman -S mingw-w64-x86_64-gdb\n```\nAnd type `y` to also install ``gdb``.\n\n5. Now search for ``environment variable`` and open it\n![](screenshots/Compiler/MSYS2/3.png)\n\n6. Click ``Environment Variables``, find ``Path`` in ``System variables``, double click to open the setting.\n![](screenshots/Compiler/MSYS2/4.png)\n\n7. Click ``New`` and copy ``C:\\msys64\\mingw64\\bin`` to the new entry.\n![](screenshots/Compiler/MSYS2/5.png)\n\n8. Click ``OK`` to close all windows. Now you finished installing GCC. Open any shell such as `cmd` and type in `gcc --version` and you shall see the following: ![](screenshots/Compiler/gcc/gcc-version.png)\n\n##### Install Clang\nInstalling Clang will also automatically install `GCC` (on MSYS2).\n\n1. Run MSYS2, type the following command:\n```\npacman -Syu\n```\n`pacman` is the package manager used by MSYS2. `-S` means \"sync\". `-y` means \"download fresh package databases from the server\". `-u` means \"upgrade installed packages\". \n\nThis command will update the packages info, so you get the latest packages. It will prompt you like this, and you type ``y`` and hit enter.\n![](./screenshots/Compiler/MSYS2/1.png)\n\n3. Then it will prompt you `` To complete this update all MSYS2 processes including this terminal will be closed. Confirm to proceed [Y/n]``, type `y` and hit enter, and it will close the window after the update is done.\n\n\n4. Relaunch MSYS2 from your start menu. Type:\n```\npacman -S mingw-w64-x86_64-clang mingw-w64-x86_64-clang-tools-extra\n```\nlike this, type `y` and hit enter to install clang\n![](screenshots/Compiler/clang/clang.png)\n\nAnd then type:\n```\npacman -S mingw-w64-x86_64-make\n```\nAnd type `y` to also install ``make``.\n\nAnd then type:\n```\npacman -S mingw-w64-x86_64-gdb\n```\nAnd type `y` to also install ``gdb``.\n\n5. Now search for ``environment variable`` and open it\n![](screenshots/Compiler/MSYS2/3.png)\n\n6. Click ``Environment Variables``, find ``Path`` in ``System variables``, double click to open the setting.\n![](screenshots/Compiler/MSYS2/4.png)\n\n7. Click ``New`` and copy ``C:\\msys64\\mingw64\\bin`` to the new entry.\n![](screenshots/Compiler/MSYS2/5.png)\n\n8. Click ``OK`` to close all windows. Now you finished installing clang. Open any shell such as `cmd` and type in `clang --version` and you shall see the following: ![](screenshots/Compiler/clang/clang-version.png)\n\n(9. Optional): If you want to get clang's implementation of the C++ standard library (ie. the STL), type this command:\n    ```\n    pacman -S mingw-w64-x86_64-libc++\n    ``` \n    When invoking `clang++`, add the flag `-stdlib=libc++`. \n    The header files of `libc++` will be stored at  `C:\\msys64\\mingw64\\include\\c++\\v1`.\n\n\nNote: `Clang` and `GCC` is installed to the same directory, eg. under `C:\\msys64\\mingw64\\bin`. Don't be confused by the directory `C:\\msys64\\clang64`. It is an empty folder.\n\n##### What is MSYS2 and Why?\n\u003e MSYS2 is a collection of tools and libraries providing you with an easy-to-use environment for building, installing and running native Windows software.\n\nBut basically, we use its implementation of MingW(Minimalist GNU for Windows), which is a collection of common developing tools seen on GNU/Linux operating systems. \n\n\u003e [!WARNING]\n\u003e **Please DO NOT use [this Mingw-w64 installer](https://sourceforge.net/projects/mingw-w64/files/), because it uses out-dated GCC toolchain, and is no longer maintained** ![](screenshots/Mingw_Installer.png)\n\nMSYS2 (in this guide) is actively maintained and provides an up-to-date GCC toolchain as well as many others, is the prefered choice.\n\n##### What's the difference between `/usr/bin` and `/mingw64/bin`\nCopied from [this stackoverflow answer](https://stackoverflow.com/questions/49475006/what-is-different-between-gcc-exe-in-msys2-usr-bin-and-gcc-exe-in-msys2-mingww64)\n\u003e The GCC compiler in /usr/bin produces executables that use msys-2.0.dll as a runtime dependency. That DLL is basically a fork of Cygwin, and it provides emulation of POSIX commands not normally available on Windows. That environment is mainly for running programs from the Linux world (like bash) which need POSIX commands and cannot be easily ported to a native Windows environment.\n\n\u003e The GCC compilers in /mingw32/bin and /mingw64/bin produce native Windows executables targeting the 32-bit or 64-bit versions of Windows respectively. The 32-bit executables can actually run on 32-bit or 64-bit Windows. These executables are easier to distribute; you generally just copy all the DLLs that they depend on from the /mingw*/bin folder to the same directory as your executable, and then you have something that will run successfully on other computers. Since the main purpose of MSYS2 is to help write native Windows software, you'll find a much wider variety of libraries in the MinGW environments than in the msys-2.0.dll environment.\n\n#### MSVC\nMSVC is Microsoft Visual C++ compiler. And you know what? You do NOT have to install Visual Studio in order to get MSVC. However, if you also want Visual Studio, skip to [setting up visual studio](#setting-up-visual-studio) directly.\n1. Download [MSVC](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019), select `Build Tools for Visual Studio 2019`\n2. Launch the installer and select these workflows\n  ![](screenshots/Compiler/MSVC/Installer.png)\n3. You have finished installing MSVC. Click `Launch` and type `cl` and you should see this:\n  ![](screenshots/Compiler/MSVC/InstallFinish.png)\n  \n  Do NOT try to add `MSVC` directly to system `PATH` because each compiler toolchain for different architecture has its own version. \n\n  This command prompt is specific to 64bit Windows architecture and has set some temporary environment variables. You can find it in `Start` -\u003e `Visual Studio 2019` -\u003e `Developer Command Prompt for VS 2019` like this: ![](screenshots/Compiler/MSVC/Location.png)\n\n\nAfter MSVC is installed, cmake can detect it as a compiler.\n  ![](screenshots/Compiler/MSVC/Cmake_VSCode.png)\n  ![](screenshots/Compiler/MSVC/Cmake_Clion.png)\n\n### Download \u0026 Install CMake\nYou can either install CMake by using the official installer or using a package manager like `MSYS2`,\nwhich you used to install `GCC` and `Clang`.\n- Using the installer:\n  1. [Download here](https://cmake.org/download/), choose the ``Windows win64-x64 Installer`` option\n\n  2. Launch the insatller, when you see this screen, choose ``Add CMake to the system PATH for all users``\n  ![](screenshots/CMake_Installer.png)\n  Now you finished installing cmake.\n- Using `MSYS2`:\n  1. Run `MSYS2` and type this command and type `Y` to install\n   ```\n   pacman -S mingw-w64-x86_64-cmake\n   ```\n  2. Search for ``environment variable`` and open it -\u003e ``Environment Variables``, find ``Path`` in ``System variables``, double click to open the setting -\u003e click ``New`` and copy ``C:\\msys64\\usr\\bin`` to the new entry.\n  ![](screenshots/SourceControl/Git.png)\n\n#### What is CMake and Why?\nCMake is a cross-platform build-system generator, which generates build files (some files dictating how your source files should be built) for your platform. \n\nFor example, on Windows by default, it generate `Visual Studio Solutions` (which is some files dicating how your source files should be built, native to `Visual Studio`) if you have Visual Studio installed. On Linux by default, it generates `Unix Makefiles` (which is some files dictating how your source files should be built, native to `make`).\n\nAnd because:\n\u003e It is a bug if your C/C++ project does NOT provide CMake support.\n\nIn reality, some of [the most loved IDEs/text editors](#setting-up-vscode) really just provide good CMake support out-of-the-box. So don't argue that [Meson](https://mesonbuild.com/) is better or some nonsense. To be considered \"better\", you really have to get good tool chain support.\n\n\n### IDEs\n\n![](screenshots/JBstats/IDE\u0026Editors.png)\n\nThis guide will cover setting up `Visual Studio`, `CLion`, `QtCreator`, `Cevelop (based on Eclipse)` and `Eclipse`.\n\n#### Setting up CLion\n1. Download [clion](https://www.jetbrains.com/clion/download/#section=windows)\n2. Launch the installer, keep clicking \"Next\". When you see the following screen, I strongly recommend you to select ``Add \"Open Folder as Project\"``.\n![](screenshots/IDE/CLion/Install_1.png)\n\n1. Run clion, set up the appearance as you like, login your account or free trial.\n\n2. After those, it will prompt this window for setting up compilers, it should be all correct and no need to change.\n![](screenshots/IDE/CLion/Install_2.png)\n\n1. Create a new C++ executable or C executable on the left\n![](screenshots/IDE/CLion/NewProject.png)\n\n1. Clion will auto generate a \"Hello world\" project and everything should be working.\n![](screenshots/IDE/CLion/Functioning.png)\n\n#### Setting up QT creator\n1. Download QT installer [here](https://www.qt.io/download-qt-installer?hsCtaTracking=99d9dd4f-5681-48d2-b096-470725510d34%7C074ddad0-fdef-4e53-8aa8-5e8a876d6ab4)\n2. Launch the installer and you will need to either sign in or create a qt account\n3. When you see this, click `Custom Install`.\n   ![](screenshots/IDE/QT/Install.png)\n4. When you see this, click `Deselect All`, because we only intend to use it as a standalone IDE, aka `Qt Creator`. If you want to do Qt development, select the component to your need.\n   ![](screenshots/IDE/QT/Install2.png)\n5. After the installation, run `Qt Creator` -\u003e `New File or Project` -\u003e `Non-Qt Project` -\u003e `Plain C++ Application` (this actually doesn't matter, you can always change to a C application in the `CMakeLists.txt` file) -\u003e Choose `CMake` as the build system -\u003e select `all kits` (this will include the different build types in CMake). `Qt Creator` should create a simple \"Hello world\" program for you, like this:\n   ![](screenshots/IDE/QT/NewProject.png)\n   ![](screenshots/IDE/QT/NewProject2.png)\n   ![](screenshots/IDE/QT/NewProject3.png)\n   ![](screenshots/IDE/QT/NewProject4.png)\n   ![](screenshots/IDE/QT/NewProject5.png)\n6. Click the `Run` button, and it should run\n   ![](screenshots/IDE/QT/RunProject.png)\n\nNote: If there is error during CMake's configure, go to `Tools` -\u003e `Options` -\u003e `Kits` -\u003e `Desktop(default)`, and make sure the C and C++ compiler is in `C:\\msys64\\mingw64\\bin` instead of `C:\\msys64\\usr\\bin`.\n![](screenshots/IDE/QT/Settings.png)\n![](screenshots/IDE/QT/Settings2.png)\n\nIf you installed `Clang` you shall see it in the compiler selection menu:\n\n![](screenshots/IDE/QT/Kits.png)\n\n\n#### Setting up Visual Studio\nYou can install Visual Studio as a standalone IDE or as a whole package including compiler, toolchain and windows sdk.\n##### Full package\n1. Download [Visual studio](https://visualstudio.microsoft.com/downloads/). Choose the ``Community`` option.\n\n2. Run the installer, select these workflows\n  ![](screenshots/IDE/VisualStudio/Installer.png)\n\n3. After installation, you are prompt to restart your computer. And then you will need to register a Microsoft Account to continue using Visual Studio. \n\n4. Run Visual Studio, select `Create a new project` -\u003e `Empty Project/Console App`, and select `Place solution and project in the same directory`.\n  ![](screenshots/IDE/VisualStudio/CreateProject.png)\n  ![](screenshots/IDE/VisualStudio/CreateProject2.png)\n  ![](screenshots/IDE/VisualStudio/CreateProject3.png)\n  The only difference between `Empty Project` and `Console App` is the latter will provide you with a \"Hello world\" program and that's it! All the default include directories and default linked runtime libraries are the same!\n  \n  - If you choose to create `Empty Project`, right click on the `\u003cProject Name\u003e` -\u003e `Add` -\u003e `New item` -\u003e `C++ source file` -\u003e `Add`, like this: \n  ![](screenshots/IDE/VisualStudio/EmptyProject1.png)\n  ![](screenshots/IDE/VisualStudio/EmptyProject2.png)\n  Then write a simple \"Hello world\" program and hit `ctrl+f5` to compile and run it, and you shall see this:\n  ![](screenshots/IDE/VisualStudio/EmptyProject3.png)\n\n  - If you choose to create `Console App`, you shall see the already created \"Hello world\". Hit `ctrl+f5` to compile and run the program and you shall see this: ![](screenshots/IDE/VisualStudio/ConsoleApplication.png)\n\n##### Standalone IDE\nIf you install Visual Studio as a standalone IDE without installing MSVC compiler toolchains, you can use it with CMake. If you have installed MSVC compiler toolchain, you can use it with Visual Studio solution just as it's a [full install](#full-package) like above. Here I introduce how to use it with CMake, **without MSVC**.\n1. Download [Visual studio](https://visualstudio.microsoft.com/downloads/). Choose the ``Community`` option.\n\n2. Run the installer, select these workflows and deselect all the optionals on the right, like this\n  ![](screenshots/IDE/VisualStudio/InstallStandalone.png)\n\n3. After installation, you need to register a Microsoft Account to continue using Visual Studio.\n\n4. Run Visual Studio, select `Create a new project` -\u003e `CMake Project` -\u003e select `Place Project under the same directory` -\u003e `Create`, like this:\n  ![](screenshots/IDE/VisualStudio/CreateProject.png)\n  ![](screenshots/IDE/VisualStudio/CMakeProject1.png)\n  ![](screenshots/IDE/VisualStudio/CMakeProject2.png)\n5. Visual Studio will auto generate a \"Hello world\" project for you, and it can successfully configure the project and compile because CMake can detect the installed `GCC`. However, it will have incorrect include errors.\n   ![](screenshots/IDE/VisualStudio/CMakeProject3.png)\n6. To solve this error, click on the configuration menu -\u003e `Manage Configurations` -\u003e click the add button -\u003e select `Mingw64-Debug` -\u003e click on the previous old configuration and click delete button\n   ![](screenshots/IDE/VisualStudio/CMakeProject4.png)\n   ![](screenshots/IDE/VisualStudio/CMakeProject5.png)\n   ![](screenshots/IDE/VisualStudio/CMakeProject6.png)\n7. Hit `ctrl+s` to save this configuration, then the include error should go away.\n   ![](screenshots/IDE/VisualStudio/CMakeProject9.png)\n\nNote: If for some reason, Visual Studio doesn't detect the right MingW version, you will still get include errors. You need to edit the `CMakeSettings.json` and correct the MingW version, like this:\n![](screenshots/IDE/VisualStudio/CMakeProject7.png)\n![](screenshots/IDE/VisualStudio/CMakeProject8.png)\n\n\n### Text editors\n#### Setting up VSCode\n1. Download [vscode](https://code.visualstudio.com/)\n2. Launch the installer, when you see this screen, I **strongly recommend you follow this setting**\n![](screenshots/Editor/VSCode/Installer.png)\n\n3. Run vscode, in the ``extension`` tab, search and install the following extensions\n- Install `Microsoft C/C++` extension, It is a Language Server by Microsoft. You can also install llvm's LSP `clangd`. `clangd` will have limitions when using with Visual Studio as CMake's generator. [See the discussion here](https://github.com/HO-COOH/CPPDevOnWindows/pull/3).\n![](screenshots/Editor/VSCode/Extension_Cpp.png)\n![](screenshots/Editor/VSCode/Extension_Clangd.png)\n- And 2 extensions for cmake. The first one in the list is for syntax highlighting when writing cmake scirpts.\n- The second one in the list is for actually running Cmake.\n![](screenshots/Editor/VSCode/Extension_Cmake.png)\n\n4. Go to settings, search ``generator``. And set ``Cmake:Generator`` to ``MinGW Makefiles``, like this:\n![](screenshots/Editor/VSCode/Extension_Cmake_Setting.png)\n\n1. Create a folder, open it in vscode. Use ``ctrl + shift + p`` to open the command menu, type ``cmake`` and choose ``CMake: Quick Start``, like this:\n![](screenshots/Editor/VSCode/Cmake_QuickStart.png)\n\n6. The cmake tool will scan the kits and there will be 2 kits. Select the first one.\n![](screenshots/Editor/VSCode/CMake_Kit.png)\n\n7. Type a name for your project, select ``Executable``, CMake tool will automatically generate a helloworld project for you. And you probably don't want to enable ctest for now, so delete everything excpet the following 3 lines:\n\n![](screenshots/Editor/vscode/CMake_Quick.png)\n```cmake\ncmake_minimum_required(VERSION 3.5.0)\nproject(helloworld VERSION 0.1.0)\n\nadd_executable(helloworld main.cpp)\n```\n\n\u003e [!IMPORTANT]  \n\u003e Rememeber to click ``Allow`` when cmake want to configure the intellisense.\n\n8. And now you can run it and debug it, and have everything working (syntax highlighting, auto complete, header files...).\n![](screenshots/Editor/VSCode/Cmake_Project.png)\n![](screenshots/Editor/VSCode/Cmake_Run.png)\n![](screenshots/Editor/Vscode/Cmake_Debug.png) \n\n\n#### Setting up Vim\n##### Using MSYS2\n1. If you install `vim` in `MSYS2`, your `.vimrc` file should be placed in\n   ```\n   C:\\msys64\\home\\\u003cUserName\u003e\\.vimrc\n   ```\n2. Create new folders along this path \n   ```\n   C:\\msys64\\home\\\u003cUserName\u003e\\.vim\\autoload\n   ``` \n   and then open `powershell` here.\n3. Type the following command to install `vim-plug`, a simple vim plugin manager\n   ```\n   iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`\n       ni plug.vim -Force\n   ```\n\n##### Standalone\nDownload and install Vim [here](https://www.vim.org/download.php#pc). It can be installed by keep clicking \"Next\" in the installer. (Note: Recommended method to install vim is through a package manager, see [here](#setting-up-a-system-wide-package-manager))\n\n1. Install `vim-plug`\n```\niwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`\n    ni $HOME/vimfiles/autoload/plug.vim -Force\n```\n\nOpen `.vimrc`, add these following lines:\n```vim\nfiletype plugin indent on\nset tabstop=4 \" show existing tab with 4 spaces width\nset shiftwidth=4 \" when indenting with '\u003e', use 4 spaces width\nset expandtab \" On pressing tab, insert 4 spaces\nsyntax on\nset nu \" Enable line numbers \nset smartindent\n\ncall plug#begin('~/.vim/plugged') \" List all the plugins to be installed\n\nPlug 'neoclide/coc.nvim'\n\ncall plug#end() \" End of plugins\n```\n\n2. Install `coc-clangd`, the C++ language client extension\n\n    Open whatever C++ file, and type command `:CocCommand clangd.install`\n\n3. Install `clangd`, the actual C++ language server.\n  \n    Type command `:CocCommand clangd.install`.\n\n4. Now you should have auto-complete working.\n  ![](screenshots/Editor/vim/clangd.png)\n\n##### Optional plugins\nAll the plugins listed below can be installed by adding `Plug '\u003cplugin-repo\u003e'` betweeen the `call plug` and `call plug` lines in the `.vimrc` file.\n1. vim-airline\n  An enhanced status line. \n  ```vim\n  Plug 'vim-airline/vim-airline'\n  Plug 'vim-airline/vim-airline-themes' \n  ```\n  ![](screenshots/Editor/vim/airline.png)\n2. nerd-tree\n   A file explorer.\n   ```vim\n   Plug 'preservim/nerdtree'\n   Plug 'Xuyuanp/nerdtree-git-plugin'\n   Plug 'tiagofumo/vim-nerdtree-syntax-highlight'\n   Plug 'ryanoasis/vim-devicons'\n   ```\n   ![](screenshots/Editor/vim/nedtree.png)\n\n3. startify\n   A welcome screen for quick opening recent folders and projects\n   ```vim\n   Plug 'mhinz/vim-startify'\n   ```\n   ![](screenshots/Editor/vim/startify.png)\n\n\n\u003c!-- #### Setting up Sublime\n1. Download Sublime [here](https://www.sublimetext.com/) and it can be installed by clicking `Next`.\n2. Hit `ctrl+shift+p` to open the command platte and then type `Install Package`, wait for the packages list to show up and then type `CMakeBuilder`.\n3. Open the `\u003cproject\u003e.sublime_project` file and edit the target named `\u003cproject\u003e\n4. Install the plugin [EasyClangComplete]\n\n#### Setting up Atom\n1. Download Atom [here](https://atom.io/) and it can be installed by clicking `Next`.\n2.  --\u003e\n\n--- \n\n\n## Debugging\nThis section describes how to debug in various IDEs/text editors.\n\n### Debugging in VSCode\nTo launch the debugger in VSCode, click the cmake project menu -\u003e right click on the `\u003ctarget name\u003e` -\u003e `Debug` like this: ![](screenshots/Editor/VSCode/LaunchDebugger.png)\n\nSee more documentation for VSCode's debugging UI [here](https://code.visualstudio.com/docs/cpp/cpp-debug#_windows-debugging-with-gdb), except for the part that sets `launch.json` because the [CMake](#setting-up-vscode) tools already handles everything :)\n\n### Debugging in CLion\nClick here ![](screenshots/IDE/CLion/Debug.png)\n\nFor more, see documentation [here](https://www.jetbrains.com/help/clion/debugging-code.html)\n\n### Debugging in Visual Studio\nClick here ![](screenshots/IDE/VisualStudio/Debugging.png)\n\nFor more, see documentation [here](https://learn.microsoft.com/en-us/visualstudio/debugger/debugger-feature-tour?view=vs-2022)\n\n### Debugging in QT\nClick here ![](screenshots/IDE/QT/Debugging.png)\n\n\n---\n## Using libraries\n\n### Setting up vcpkg\n``vcpkg`` is a C/C++ package manager, which makes using libraries much easier (almost as easy as using ``pip`` in python).\n\n~~You **HAVE TO** install MSVC or Visual Studio on Windows to use `vcpkg`. \n(Mingw GCC **CAN NOT** be used to build `vcpkg` on Windows at the time being). \nAfter [MSVC](#setting-up-msvc) is installed, you can follow the guide [here](https://github.com/microsoft/vcpkg#quick-start-windows)\n to set it up.~~\n\nStarting from [this commit](https://github.com/microsoft/vcpkg/commit/aa60b7efa56a83ead743718941d8b320ef4a05af), `vcpkg` binary can be \ndirectly downloaded by running `bootstrap-vcpkg.bat`, you no longer need to [install MSVC](#msvc) to build it!\n\n1. Open a shell(`cmd`) and go to the directory where you want `vcpkg` to be installed. (Something like `C:\\` or `C:\\dev`)\n2. Type this command:\n   ```\n   git clone https://github.com/microsoft/vcpkg\n   ```\n3. Type this command:\n   ```\n   .\\vcpkg\\bootstrap-vcpkg.bat\n   ```\n4. Type this command:\n   ```\n   .\\vcpkg\\vcpkg.exe integrate install\n   ```\n\n### Finding and Installing a library\n- To find a library, use `vcpkg search \u003clibrary\u003e`\n- To install a library, use `vcpkg install \u003clibrary\u003e:x64-windows` or `vcpkg install \u003clibrary\u003e:x86-windows`\n\n\u003e [!NOTE]\n\u003e  `vcpkg` will build 32 bit libraries by default on Windows (although it's 64 bit on Linux by default,~~Microsoft fix it please~~), which is NOT probably what you want, so you want to speficy the architecture by adding `:x64-windows`.\n\n### Using a library\nAfter you install the library in `vcpkg`, you either:\n- Use `Visual Studio` without **ANY ADDITIONAL CONFIGURATION**\n- Use `cmake` with the instruction provided by `vcpkg` when you install the library.\n\nBelow is a complete example of using `vcpkg` to install and use the [boost](https://www.boost.org/) library.\n\n1. Install the library in `vcpkg` with `vcpkg install \u003cLibrary Name\u003e`, like this:\n   ```\n   vcpkg install boost:x64-windows\n   ```\n\n   And you should see the following\n   ![](screenshots/vcpkg/vcpkg_install.png)\n\n2. Note that on Windows, `vcpkg` builds libraries using `MSVC`, so you should also use `MSVC` in order to link sucessfully. Header-only libraries like `boost` may be used with other compilers like `GCC`.\n\nAfrer the library finishes installing, you can either:\n\n- Use it in Visual Studio without doing any additional configuration\n  ![](screenshots/vcpkg/vcpkg_VisualStudioIntegration.png)\n  **Note: Configure the solution achitectural target correctly according to your library. Visual Studio empty project defaults to `x86` but you may installed `x64` library.**\n\n- Or use it in VSCode/CLion with cmake and cmake tool chain file. See the docs [here](https://github.com/microsoft/vcpkg#using-vcpkg-with-cmake)\n\n---\n## Unit Testing\n[What is unit testing?](https://en.wikipedia.org/wiki/Unit_testing)\n\n![](screenshots/JBstats/UnitTests.png)\n\n\n### Google Test\n[google test](https://github.com/google/googletest) is a famous and widely supported by IDEs/text editors unit testing framework for C++.\n\nYou can get google test by these ways\n- Using `vcpkg`: Following setting up `vcpkg`, we can easily install the library by\n  ```\n  vcpkg install gtest:x64-windows\n  ```\n  Note that if your application is targeted to 32 bit, use this command instead\n  ```\n  vcpkg install gtest\n  ```\n\n- Using `MSYS2`: Note that this can only be used with `GCC \u0026 Clang` compiler from `MSYS2`.\n  ```\n  pacman -S pacman -S mingw-w64-x86_64-gtest\n  ```\n\nAfter installing the library,\n- If you use Visual Studio (MSBuild Project), you just need to `#include \u003cgtest/gtest.h\u003e` like a normal C++ source file and either:\n  + Provide a `main` function at the bottom of your source file\n    ```cpp\n    int main(int argc, char **argv) \n    {\n        ::testing::InitGoogleTest(\u0026argc, argv);\n        return RUN_ALL_TESTS();\n    }\n    ```\n    ![](screenshots/Gtest/../UnitTest/GTest/VSBuild.png)\n  + Don't provide a `main` function, then you need to link additional libraries in the linker settings.\n      1. Right click on your project -\u003e `Properties` -\u003e `Linker` -\u003e `AdditionalDependencies`, \n      Make sure this configuration is `Debug` and `x64` \n      (or x86 depend on the architect or your installed Gtest library)\n      and add these 2 lines\n      ```\n      gtestd.lib\n      $(VcpkgRoot)installed\\$(VcpkgTriplet)\\debug\\lib\\manual-link\\gtest_maind.lib\n      ```\n      ![](screenshots/UnitTest/GTest/VSBuildMain.png)\n      \n      1. Click the configuration menu to `Release` and also add these 2 lines, like this\n      ```\n      gtest.lib\n      $(VcpkgRoot)installed\\$(VcpkgTriplet)\\lib\\manual-link\\gtest_main.lib\n      ```\n      ![](screenshots/UnitTest/Gtest/VSBuildMainRelease2.png)\n    \n    Then you should be able to write the test source file without the `main` function, and build in both configurations like this\n    - Debug build\n    ![](screenshots/UnitTest/GTest/VSBuildMainDebug.png)\n    - Release build\n    ![](screenshots/UnitTest/GTest/VSBuildMainRelease.png)\n\n- If you use CMake, regardless of whether you installed `Google Test` library from `vcpkg` or `MSYS2`, \n  you can make use of `CTest` built-in to Cmake as a test runner to run your google test,\n  which is supported by most IDE/editors you will see below.\n  A minimum `CMakeLists.txt` is like:\n```cmake\ncmake_minimum_required(VERSION 3.10.0)\n\nproject(\u003cproject name\u003e VERSION 0.1.0)\n\nfind_package(GTest CONFIG REQUIRED)\nenable_testing()\ninclude(GoogleTest) #for gtest_discover_tests() function\n\nadd_executable(\u003ctest target name\u003e test.cpp) #This is the testing executable\ntarget_link_libraries(\u003ctest target name\u003e PRIVATE GTest::gtest GTest::gtest_main) #Link it to the google test library\ngtest_discover_tests(\u003ctest target name\u003e)  #integrate google test with ctest to this testing executable\n```\n- Or you simply want a testing executable, so you don't bother with `CTest`.\n```cmake\ncmake_minimum_required(VERSION 3.10.0)\n\nproject(\u003cproject name\u003e VERSION 0.1.0)\n\nfind_package(GTest CONFIG REQUIRED)\nadd_executable(\u003ctest target name\u003e test.cpp) #This is the testing executable\ntarget_link_libraries(\u003ctest target name\u003e PRIVATE GTest::gtest GTest::gtest_main) #Link it to the google test library\n```\n![](screenshots/UnitTest/GTest/MSYS2.VSCode.png)\n\n#### Integration with Visual Studio\n\n#### Integration with CLion\nCLion has test adaptors built-in so it should automatically detect the test whether you are using `CTest` as runner or just simply compiling a testing executable.\n- With `CTest`\n  ![](screenshots/UnitTest/GTest/CLionCTest.png)\n- Without `CTest`\n  ![](sceenshots/UnitTest/GTest/../../../screenshots/UnitTest/GTest/CLionWithoutCTest.png)\n\nYou can click the `run` button on the left of each `TEST()` macro to run individual test, or click `ctrl+shift+f10` to run all test.\n\nSee [here](https://www.jetbrains.com/help/clion/monitoring-and-managing-tests.html#RedebugFailedTests) for more documentation.\n\n#### Integration with VSCode\nYou need to use [`CTest`](#google-test) (the first version of the minimum `CMakeLists.txt`) as your test runner to get the integration working.\n1. Install the [CMake Test Explorer](https://marketplace.visualstudio.com/items?itemName=fredericbonnet.cmake-test-adapter) extension (proud contributor)\n2. Open VSCode settings, go to `Extension` -\u003e `CMake Test Explorer` section, and change these following settings:\n   - Build Config: `${buildType}`\n   - Build Dir: `${buildDirectory}`\n   - Select Cmake Integration\n  ![](screenshots/UnitTest/GTest/VSCodeIntegration.png)\n4. After that, build your project once and then click the `refresh test` button, this plugin should find all the testing suites and test cases in your test files.\n   ![](screenshots/UnitTest/GTest/VSCodeIntegration2.png)\n5. Then you can easily manage or debug all your test cases or each individual test in this panel.\n   ![](screenshots/UnitTest/GTest/VSCodeIntegration3.png)\n\n\n### Microsoft Unit Test\n\n### CTest\n\n\n## Documentation\n\n### Setting up doxygen\nWriting good documentation is also an essential part of development. The most commonly used documentation generator is [doxygen](https://www.doxygen.nl/download.html). Download `the binary distribution for Windows` and then install it. After it is installed, there will be a GUI frontend called `doxywizard`, which looks like this:\n![](screenshots/Doxygen/Doxygen_Start.png)\nTo write good documentation, install these plugins:\n- For [VSCode](https://marketplace.visualstudio.com/items?itemName=cschlosser.doxdocgen) (proud contributor)\n- For [Visual Studio](https://marketplace.visualstudio.com/items?itemName=FinnGegenmantel.doxygenComments)\n\nLearn the syntax for documentation [here](https://www.doxygen.nl/index.html)\n\nAfter you documment your code, any decent IDEs/text editors should be able to show the documentation, helping you better understand your own code as well as others.\n![](screenshots/Doxygen/Doxygen_VsCode.png)\n![](screenshots/Doxygen/Doxygen_VisualStudio.png)\n\nUsing doxygen is straight-forward using the GUI, just specify the root directory of your project, configure some settings to your liking, then run it.\n![](screenshots/Doxygen/Doxygen_Generate.png)\n\nDoxygen generated documentation too ugly? \nFollow the guide [here](https://devblogs.microsoft.com/cppblog/clear-functional-c-documentation-with-sphinx-breathe-doxygen-cmake/) \nto use doxygen with sphinx for a more beautiful documentation.\n\n### Integrate doxygen with CMake\nYou can set up an automatic documentation generation step within CMake, so that each time you build your cmake project,\nthe docs would be generated or updated. \nTo do that, assuming you have a `doc` directory in your project, something like this\n```\nMyProject\n|--doc\n|--README.md\n|--CMakeLists.txt\n|...\n```\n add the following snippet to your root `CMakeLists.txt`\n```cmake\nfind_package(Doxygen)\nif(DOXYGEN_FOUND)\n    set(DOXYGEN_USE_MDFILE_AS_MAINPAGE \"${CMAKE_SOURCE_DIR}/README.md\")\n    set(DOXYGEN_OUTPUT_DIRECTORY \"${CMAKE_SOURCE_DIR}/doc\")\n    set(DOXYGEN_EXCLUDE_PATTERNS \"\u003cyour binaries or other files generated by your IDE\u003e\")\n    doxygen_add_docs(doc ${CMAKE_SOURCE_DIR} ALL) #this will create a target called \"doc\"\n    #You can either manually run the target or it will automatically run when \"cmake --build .\" is called\nendif()\n```\n\n---\n## Source control\nMost if not all of the development workflow involves using `Git`.\nAlso, some of CMake's functionalities requires Git to be installed.\nAnd you also need Git to install `vcpkg`. \nYou can install `Git` either by using the installer or using a package manager, \nlike `MSYS2` which we just used above to install `GCC` and `Clang`. \n- Install by using the installer\n  1. Download the installer [here](https://git-scm.com/download/win) and then it can be installed by keep clicking `Next`.![](screenshots/SourceControl/Installer.png)\n- Install by using a package manager\n  + chocolatey: `choco install git`\n  + scoop: `scoop install git`\n  + winget: `winget install git`\n\n---\n## Setting up a system-wide package manager\nPackage manager makes it easier to install and update softwares, \nallowing you to use one single command to update all installed softwares.\n\nOn Windows, there is built-in `winget` on a reasonably new build of Windows 10.\n\nI recommend installing those frequently updated software that doesn't have a built-in updater\n(like `cmake`, `vim`...)\nusing a package manager.\n\n### Winget\nInstall and docs [here](https://docs.microsoft.com/en-us/windows/package-manager/winget/)\n\n### Chocolatey\nInstall and docs [here](https://chocolatey.org/)\n\n### Scoop\nInstall and docs [here](https://scoop.sh/)\n\n---\n## Setting up WSL\nSetting up WSL is the same as setting up a pure linux environment, therefore it is not discussed here. \n\n---\n## Addtional Tooling\n\n### Resharper\nis a non-free extension for Visual Studio that can greatly benefit your productivity. Download [here](https://www.jetbrains.com/resharper-cpp/).\n\n### Clang-tidy\n[Clang-tidy](https://clang.llvm.org/extra/clang-tidy/) is a C++ \"linter\" that provides extra warnings and style checks to your C++ compiler.\n\n\n\n#### Integration with Visual Studio\nClang-Tidy support is available starting in Visual Studio 2019 version 16.4. \nIt's included automatically when you choose a C++ workload in the Visual Studio Installer.\n[More info](https://docs.microsoft.com/en-us/cpp/code-quality/clang-tidy?view=msvc-160).\n\n##### MSBuild Project\n1. Right click on project -\u003e `Properties` -\u003e `Code Analysis` -\u003e `Clang-tidy`\n   ![](screenshots/Tooling/Clang-tidy-msbuild.png)\n2. In `Checks to Enable or Disable`, you can configure checks to be enabled or disabled using supported flags.\n   To enable a check, add the flag name directly. To disable a check, prefix with a `-`.\n   Flags are separated by comma.\n   For example: `*` enables all checks. \n   `-clang-analyzer-*` disables all checks named `clang-analyzer...`.\n3. Build your project, and you should see warnings provided by clang-tidy.\n   ![](screenshots/Tooling/clang-tidy-msbuild-warning.png)\n\n##### CMake Project\n1. Click on build configuration menu -\u003e `Manage Configuration` -\u003e `Edit JSON`\n   ![](screenshots/Tooling/clang-tidy-cmake-config.png)\n2. Add a key named `enableClangTidyCodeAnalysis` and set value to `true`.\n   Optionally control which checks to be enabled or disabled by adding a key named `clangTidyChecks`\n   ![](screenshots/Tooling/clang-tidy-cmake-config-json.png)\n3. Save and exit. Now you should see warnings provided by clang-tidy.\n   ![](screenshots/Tooling/clang-tidy-cmake-warning.png)\n\n#### Integration with CLion\n\n\n#### Integration with VSCode\nInstall [this plugin](https://marketplace.visualstudio.com/items?itemName=notskm.clang-tidy).\n\n\n### ClangFormat\n[ClangFormat](https://clang.llvm.org/docs/ClangFormat.html) is a code formatting tool to help your code follow some pre-defined formatting rules.\n\nIn all IDE/editors, the actual ClangFormat executable needs to be installed first.\n\n#### Integration with Visual Studio\n1. Install [this plugin at the bottom \"Visual Studio plugin installer\"](https://llvm.org/builds/)\n2. Then you can find settings in `Tools` -\u003e `Options` -\u003e `LLVM/Clang` -\u003e `ClangFormat`\n  ![](screenshots/tooling/ClangFormat/ClangFormat-VS.png)\n\n#### Integration with VSCode\nClangFormat is supported by VSCode C++ extension out-of-the-box.\nClangFormat settings can be found in C++ extension settings.\n![](screenshots/tooling/ClangFormat/ClangFormat-vscode.png)\n\n\n### Incredibuild\nis a free-for-personal-use build tool that accelerate visual studio's project building. \nIt also provides a nice graph to visualize the building process and time consumption of individual files.\n\n![incredibuild](screenshots/incredibuild.png)\n\nIt can be installed when [installing visual studio](#setting-up-visual-studio). \nDownload the license [here](https://www.incredibuild.com/free-trial).\n\n### C/C++ include guard (proud contributor)\nis a [VSCode](#setting-up-vscode) extension that automatically add include guard for you so that you no longer need to remember it.\nDownload [here](https://marketplace.visualstudio.com/items?itemName=akiramiyakoda.cppincludeguard).\n\n### include-info (proud maker)\nis a [VSCode](#setting-up-vscode) extension that shows the included header file size \nand provide a fast way to jump to those included files.\nDownload [here](https://marketplace.visualstudio.com/items?itemName=HO-COOH.include-info)\n\n\n### VSCode Font switcher (proud contributor)\nis a [VSCode](#setting-up-vscode) extension that provide a fast way to switch between different fonts. \nDownload [here](https://marketplace.visualstudio.com/items?itemName=evan-buss.font-switcher).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fho-cooh%2Fcppdevonwindows","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fho-cooh%2Fcppdevonwindows","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fho-cooh%2Fcppdevonwindows/lists"}