1. Before you start
1.1. About the Documentation
This documentation is continuously developed, corrected and improved to assist you in bringing CENA to bare on your use-cases and applications.
This documentation is rendered in HTML (and possibly other formats) using Sphinx, the documentations source code included with the CENA written in Markdown and reStructured text.
Feel free to contact us you have corrections, amendments or simply feedback on our documentation.
This documentation is intended as a guide, not a API reference document. This is provided as a separate set of HTML documentation produced by Doxygen.
1.1.1. Target audience
Within this documentation we assume that you are familiar with the C++ programming language. We also assume that you are not stranger to object orientation and common paradigms such as SOLID principles and that you are fluent in UML.
This documentation does not strive to be a programming tutorial and will not go into detail on how to configure and use linkers, libraries, projects, makefiles and other “tools of the trade”.
1.1.2. Notation
In this documentation, monospaced
highlighting is used to denote class names or code constructs.
italic highlighting is used to denote names of components or conceptual units. Usage with names like ControlEngine is obvious, but when used e.g. as example this highlightling means that “example” will used to consistently refer to a specific concept.
If something is highlighted in bold, it is meant to draw your attention; either because it is really important or because it helps you quickly scan the document for context.
1.2. Prerequisites
To get started, you will need
A preinstalled and configured C++ toolchain for your target platform
Optionally - but highly advisable - is the use of a modern IDE with code introspection and integrated (remote) debugger
Either
A CMake based project of you own that uses CENA as a linkable dependency or
CENA and its source code (which is based on CMake itself)
We advise you get started on in a windows or linux environment for your convenience, though CENA is not in any way limited to these platforms.
1.2.1. Dependencies
Like any software, CENA comes with dependencies on third party tools.
Tip
Optional dependencies
Note that you do not need all the tools listed here; a somewhat modern CMake and C/C++ toolchain will suffice if you want to “just build binaries”.
To build this project from source, you will need:
CMake 3.16 or higher
A C Compiler supporting C99 or newer
A C++ Compiler supporting C++17 or newer
For generating source-code documentation (optional)
For generating tests (optional)
Google Test/Google Mock (using
cmake -Dgtest_disable_pthreads=ON -DBUILD_SHARED_LIBS=ON
)For generating coverage information (optional)
Depending on your compiler either
GCovr and LCov (GCC)
llvm-cov (LLVM/Clang)
For static code analysis (optional)
cppcheck
The software has the following package dependencies that need to be provided by the system
libc (for malloc, free, calloc…); may be provided by alternative to glibc, e.g. FreeRTOS