# Source Structure

As seen befor, each CMake Folder has a set of elements describing the build process. General structure looks like this:

  -> Source Folder
    -> Project
      -> Target
      -> ...
    -> ...
    -> Configurations
      -> Configuration
      -> ...
  -> ...

# Source Folder

A source folder is a folder containing the root CMakeLists.txt file (currently only workspace root). This CMake file describes the build process for the source folder and The project and target informations are extracted from it.

# Project

The first project is specified in the root CMakeLists.txt file, additional projects can be added through the add_subdirectory directive in this file. Each project can have a list of targets associated with the it and spefied by the it's CMake files.

TIP

The main purpose of projects is to group targets under a certain name. (Usually by importing some 3rd party sources or grouping a big code base by projects) They have no relevance for the build process itself as there is only one build folder per source folder.

# Target

A targets specifies a concrete build step like an executuable or a library. Targets can be build either individually or all targets of a source folder.

# Configuration

Additionally, each source folder has a list of configurations controlling the build process. The default configrations just mimic the CMake build types (Debug, Release, RelWithDebInfo, MinSizeRel). Take a look at the Configuration Reference for more informations about configurations.