# CMake Project initialization

**URL:** https://discourse.cmake.org/t/cmake-project-initialization/6756
**Category:** Development
**Created:** [October 29, 2022, 11:37pm UTC](https://discourse.cmake.org/t/cmake-project-initialization/6756 "2022-10-29T23:37:51Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![mroussin](https://discourse.cmake.org/user_avatar/discourse.cmake.org/mroussin/32/1392_2.png) [@mroussin](https://discourse.cmake.org/u/mroussin)
#### Post date: [October 29, 2022, 11:37pm UTC](https://discourse.cmake.org/t/cmake-project-initialization/6756/1 "2022-10-29T23:37:51Z")

</div>

I want CMake to have a project initializer to start quickly, similar to [xmake](https://xmake.io/#/guide/quickstart?id=create-project) or [cargo init - The Cargo Book](https://doc.rust-lang.org/cargo/commands/cargo-init.html). The advantage for new users is they don’t have to deal with CMake files. One of the goals is to provide a very simple project to get a project going. I don’t want this command to support hundreds of use cases, it would be minimalist, simple and easy to maintain.

The suggested user interface can look something like this:

```auto
$ cmake --create my-project
$ cd my-project
$ cmake -S. -Bbuild

```

The user didn’t have to create/manipulate any CMake files or learn the syntax. The new command will provide a minimalist CMake project initializer, and it will set up a new project ready to be compiled.

If we compare this to the current way, without any external help from 3rd party tools it looks something like this:

```auto
$ mkdir my-project
$ cd my-project
$ $EDITOR main.cpp // Write default hello world!
$ $EDITOR CMakeLists.txt // Write minimum of 2 lines to get started
$ cmake -S. -Bbuild

```

There are 3rd party tools that can provide project initializers for CMake. Here is an example: [cmake-init · PyPI](https://pypi.org/project/cmake-init/). One issue that I see with those tools is that you need to install something else to get started with CMake. If a user requires something more complex or an enterprise template, I think that should be a 3rd party tool.

CMake is a meta-build system. If I want a project generator, maybe I should use a different tool?
