Apparat is a powerful C++ framework for linux programmers
presenting handy and practical facilities, including following:
- advanced smart pointers (strong and weak handles),
- set of containers (array, list, map, sector, cycle buffer, priority queue),
- own powerful signal/slot mechanism (signal can connect with slots in other
- functors and functor's map,
- threads and timers,
- state machines,
- input/output streams,
- serial port, sockets and so on.
Apparat is a set of C++ source files, that can be compiled with your project.
Folder 'test' in source tree contains some examples of using Apparat.
(Unfortunately, not all examples works: but soon I'll correct them.)
For assembling your projects (and my test esamples) I am suggesting my own
project management system based on standard 'make'.
Root of this system is ingenious 'GNUMakefile' that automatically
generates rules for compiling of all files in project's source tree and
linking generated object files in executable file or library.
My project management system has some advantages:
- 'GNUMakefile' automatically generates rules for compiling all source files,
and creates dependencies of source files for next compilation;
- 'GNUMakefile' uses file 'project.mk' - config file for current project.
It contains misc options for finding of different types of sources,
based on regular expressions, also you can set compilation options for
those types of source;
- 'GNUMakefile' can generate list of sources - 'files.mk', and
you can modify it to exclude some files from compilation (may be temporarily);
for this you must add sign '-' direct before file name;
- 'GNUMakefile' can generate qmake project file; I am using this feature
for reviewing project's files in QtCreator.
Assemblying project: 'make -f GNUMakefile'
Generating list of sources in source tree: 'make -f GNUMakefile project_files'
Generating qmake project file: 'make -f GNUMakefile qmake_pro'
Cleaning object files and target: 'make -f GNUMakefile clean'
You must attentively learn examples of project config files 'project.mk'
for effective using of the 'GNUMakefile'.