MIRA
Executables, Shared Libraries


Contents

Overview

Each MIRA application usually consists of different software components that interact with each other to form a complex software system.

Each software module must be either implemented as shared library or as stand- alone executable.

Executable

An executable is a file that can be executed by the processor or a script interpreter to perform indicated tasks according to encoded instructions. For execution of the encoded computer program a new process is instantiated.

To compile your own standalone application, you can use the MIRA_ADD_BINARY() in your CMakeLists.txt.

However, most MIRA applications are started using the executables mira or miracenter. These executables start a new process with its own framework.

If a complex MIRA application consists of different modules that are started using different executables and hence run in different processes, these modules have to communicate between the processes. This so called inter-process communication is handled by the communication concepts of the MIRA framework transparently.

Shared Libraries

Formally, a shared library is a collection of functionalities in form of binary program code and optional resources that are compiled into a single binary file. On Windows platforms, such libraries are called Dynamic Link Libraries (DLL), on Unix platforms they are named Shared Library or Shared Object (SO).

MIRA uses shared libraries to achieve a plugin mechanism. Hence, the shared libraries are used for all units or subunits as well as for all plugins that extend the miracenter or other MIRA components.

In practice, Units and plugins are compiled into a separate shared library by using the MIRA_ADD_LIBRARY() macro in the CMakeLists.txt file.

Shared Libraries do not require a special entry point, instead a certain class must be implemented in order to realize a Unit or Plugin.

When the libraries are needed, they are loaded dynamically and automatically by the MIRA class factory.

Manifest

Manifests are files that are automatically generated with each shared library. All manifest files are loaded automatically when a MIRA application is launched, in order to obtain the necessary information about the existing classes. This allows lazy loading: a library is loaded only when a certain class of that specific library is needed.