Skip to content

Architecture

Folders

The goal of this document is to give an overview about the folder architecture of this repository and explain how the different parts are imbricated between them.

This repository is structured like below:

.
├── agent
├── docs
├── externals
├── libraries
├── platform
└── tests

Application sources

Application sources are necessary to build the final binary to be executed on the target. It is composed by 4 main folders:

  • externals contains the third parties used in this project. FetchContent from cmake should be used to retrieve them.
    • An exception can be made if it is a light header-only library and may be placed directly into its folder.
  • platform includes all the supported platform and the platform-specific code. Please refer to Platform documentation.
  • libraries contains the internal libraries to be used as API by the agent. It shall be platform-agnostic and it is organized like below:
libraries
├── myLib
│   ├── CMakeLists.txt
│   ├── include
│   │   └── myLib
│   │       └── foo.h
│   └── foo.cpp
├── others...
└── CMakeLists.txt
  • agent is the main application to be executed on the target and will build as an executable. Like the library, it shall be platform-agnostic and should use the platform sources to execute specific behaviors.

The following schema describes the relationships between these modules.

includes klas-architecture.png

Unit tests

Documentation

  • docs: contains the project documentation.