# Visual Studio's external build projects Visual Studio supports developing projects that have an external build system. If you wish to use this integration method, here is how you set it up. This documentation describes Visual Studio 2019. Other versions have not been tested, but they should work roughly in the same way. ## Creating and compiling Check out your entire project in some directory. Then open Visual Studio and select `File -> New -> Project` and from the list of project types select `Makefile project`. Click `Next`. Type your project's name In the `Project name` entry box. In this example we're going to use `testproj`. Next select the `Location` entry and browse to the root of your projet sources. Make sure that the checkbox `Place solution and project in the same directory` is checked. Click `Create`. The next dialog page defines build commands, which you should set up as follows: | entry | value | | ----- | ----- | |build | `ninja -C $(Configuration)` | |clean | `ninja -C $(Configuration) clean` | |rebuild| `ninja -C $(Configuration) clean all| |Output | `$(Configuration)\name_of_your_executable.exe| Then click `Finish`. Visual Studio has created a subdirectory in your source root. It is named after the project name. In this case it would be `testproj`. Now you need to set up Meson for building both Debug and Release versions in this directory. Open a VS dev tool terminal, go to the source root and issue the following commands. ``` meson testproj\Debug meson testproj\Release --buildtype=debugoptimized ``` Now you should have a working VS solution that compiles and runs both in Debug and Release modes. ## Adding sources to the project This project is not very useful on its own, because it does not list any source files. VS does not seem to support adding entire source trees at once, so you have to add sources to the solution manually. In the main view go to `Solution Explorer`, right click on the project you just created and select `Add -> Existing Item`, browse to your source tree and select all files you want to have in this project. Now you can use the editor and debugger as in a normal VS project.