> AI agents: For documentation discovery and navigation, see [llms.txt](/llms.txt).

# Create a CMake hello world project with CMake Quick Start

In this article, you'll learn how to create a CMake hello world project from scratch using the CMake Tools extension in VS Code.

If you have an existing CMake project that already has a `CMakeLists.txt` file in the root directory but no CMake presets, you can skip to [Create a `CMakePresets.json` file](#create-a-cmakepresetsjson-file) to configure your project with CMake presets.

Otherwise, create a folder for a new project. From the Terminal window, create an empty folder called `HelloWorld`, navigate into it, and open VS Code in that folder by entering the following commands:

```bash
mkdir helloworld
cd helloworld
code .
```
The `code .` command opens VS Code in the current working folder, which becomes your "workspace".

## Create a CMakeLists.txt file

The CMake Tools extension can create the files for a basic CMake project for you.

1. Open the Command Palette (`kb(workbench.action.showCommands)`) and run the **CMake: Quick Start** command:

    ![Create CMake quickstart](images/cpp/cmake-quickstart-command-palette.png)

1. Enter a project name, and select **C++** as the project language.

    This information will be written to `CMakeLists.txt` and a few initial source files.

    > **Note:** If you had other source code files in this folder that you wanted to add as targets to the `CmakeLists.txt`, an option to add these would now be given. But for this tutorial, we will stick with just the hello world file.

1. Select **CTest** as an additional option to add support for testing. You can also select **CPack** for CPack support.

    ![Additional Options](images/cpp/cmake-quickstart-options.png)

1. Next, select **Executable** as the project type to create a basic source file (`main.cpp`) that includes a basic `main()` function.

    ![Choose project type](images/cpp/cmake-choose-type.png)

    > **Note:** If you had wanted to create a basic source and header file, you would have selected **Library** instead. But for this tutorial, **Executable** will do. If you are prompted to configure IntelliSense for the folder, select **Allow**.

This successfully creates the `CMakeLists.txt` file, which tells the CMake tools how to build your project.

![Project contents](images/cpp/cmake-quickstart-cmakelists.png)

## Create a CMakePresets.json file

Next, continue with the CMake Quick Start to create a `CMakePresets.json` file.

1. Select **Add a New Preset** and **Create from Compilers**.

    The extension automatically scans for kits on your computer and creates a list of compilers found on your system.

1. Select the compiler you want to use.

    For example, depending on the compilers you have installed, you might see something like this:

    ![Add a new preset](images/cpp/cmake-quickstart-selectkit.png)

1. Enter a name for this new preset.

    The name for the preset will be written to `CMakePresets.json`.

After completing these steps, you should now have a complete hello world CMake project that contains the following files: `main.cpp`, `CMakeLists.txt`, and `CMakePresets.json`.

![Add a new preset](images/cpp/cmake-quickstart-projcontents.png)
