MIRA
Directory structure


Directory structure of Projects

MIRA is organized in Projects that contain Tools, Toolboxes and Domains. Each Project has the same basic directory structure:

MyProject
|-bin
|-lib
|-build
| |-debug
| |-release
|-external
|-domains
|-toolboxes

All compiled binaries of the Project will be found in the "bin" folder (if not stated otherwise see Creating an executable component). All compiled libraries of the Project together with their Manifest file will be found in the "lib" folder (if not stated otherwise see Creating a library component).

All compiled and temporary build files are found in either build/debug or build/release depending on the build type (see Building Particular Targets).

If a Toolbox or Domain contains dependencies to external projects or libraries (which are not installed as general system components) these should be located in the "external" folder.

All Toolboxes reside in the "toolboxes" folder and all Domains are located in the "domains" directory.

Directory structure of Toolboxes

Mapping
|-etc
|-doc
|-include
| |-mapping
|-src

Configuration files go to the "etc" folder. Include and source files will be located in their respective folder ("include" or "src"). Include files of Toolboxes should be stored in a meaningful sub directory of "include". It avoids ambiguities of include files if a module depends on multiple Toolboxes and allow the user to see from where he includes a file:

#include <mapping/DataTypes.h>
#include <audio/DataTypes.h>

Documentation will be found in "doc".

Directory structure of Domains

Typically several sub-domains are grouped in a Domain (e.g. Different audio processing modules for recording, playback and editing will be grouped in an "audio" domain).

audio
|-AudioRecorder
| |-etc
| |-doc
| |-include
| |-src

Configuration files go to the "etc" folder. Include and source files will be located in their respective folder ("include" or "src"). Documentation will be found in "doc".

Where to put headers

Header files will reside in the respective include sub directory of the module they belong to. For Toolboxes they should be located in a meaningful sub directory of "include" to avoid ambiguities of include files (see Directory structure of Toolboxes).

Headers for Serialization

Header files that add support for serialization to data structures from external libraries follow a special rule. They will be put in a sub directory to the serialization module. Their names are based on the name of the include file of the external library.

For example if one wants to add serialization support for Eigen data types he will have to add a sub directory Eigen in the include/serialization/adapters directory. The header file will be called Eigen to follow the Eigen naming convention. This is because if an other person wants to use the serialization of Eigen and has used Eigen before he only has to change the include path:

#include <Eigen/Eigen>
// change to
#include <serialization/adapters/Eigen/Eigen>