Wiki » History » Version 16

J. Wienke, 01/05/2011 08:54 PM

1 7 J. Wienke
h1. Prerequisites
2 1 J. Wienke
3 7 J. Wienke
h2. Dependencies
4 7 J. Wienke
5 4 J. Wienke
* Boost >= 1.38 (for hardy available in the gar-installer, 1.34.1 untested)
6 14 J. Wienke
* Boost.UUID (header-only, officially included in Boost since 1.42, headers from this version can be used with all older versions of boost, gar-installer package available)
7 4 J. Wienke
* CMake (tested with 2.8)
8 4 J. Wienke
* optional
9 4 J. Wienke
** Doxygen for API generation
10 1 J. Wienke
** Lcov for code coverage analysis
11 15 J. Wienke
** cppcheck for static code analysis
12 7 J. Wienke
13 7 J. Wienke
h2. Supported Operating Systems and Compilers
14 7 J. Wienke
15 7 J. Wienke
* Linux (GCC 4.x)
16 7 J. Wienke
* Windows (MS Visual Studio 9 2008)
17 4 J. Wienke
18 8 J. Wienke
Other combination may be possible but are currently untested.
19 8 J. Wienke
20 4 J. Wienke
h1. Contents
21 4 J. Wienke
22 16 J. Wienke
* [[Logging|Logging Adapter]] - Logging interface with support for different backends
23 16 J. Wienke
* [[Math|Math]] - Various base data structures and methods for common mathematical calculation in robotics
24 16 J. Wienke
* [[Misc|Miscellaneous]] - Various small helpers and utilities that do not fit in any other category
25 16 J. Wienke
* [[Subprocess|Subprocess]] - A python-inspired, platform-independent way to launch other processes
26 16 J. Wienke
* [[Threading|Threading]] - Different helpers for managing threaded applications, includes a task abstraction, synchronized data structures and thread pools
27 16 J. Wienke
* [[CMake|CMake]] - A collection of modules for using CMake, including find-modules for different 3rd-party libraries and applications
28 16 J. Wienke
29 6 J. Wienke
h2. Logging Adapter
30 1 J. Wienke
31 16 J. Wienke
Several different logging systems exist with different advantages and dependencies. E.g. log4cxx heavily relies on APR which is a huge dependency to build i.e. for embedded systems like Nao. To decouple libraries from concrete logging implementations and their dependencies, RSC contains a flexible adaption layer that can utilize different logging mechanisms through one interface. If e.g. log4cxx is available, a client using the RSC logging system can use log4cxx through the provided interfaces. If no versatile logging system is available, RSC falls back on a simple console logging mechanism without any dependencies. Hence, client code does not need to be recompiled for changing the logging system.
32 6 J. Wienke
33 6 J. Wienke
Currently the linker call decides which logging mechanisms are available by linking their adapter shared libraries to the client. A plugin system is planned to remove the necessity of calling the linker.
34 6 J. Wienke
35 9 J. Wienke
h2. Subprocess
36 9 J. Wienke
37 9 J. Wienke
A high-level interface for starting executables and automatically terminating them based on the RAII-pattern. The operating system is abstracted.
38 9 J. Wienke
39 9 J. Wienke
h2. Threading
40 9 J. Wienke
41 9 J. Wienke
Support classes for threading tasks like synchronized queues, a task abstraction, or a thread pools for dispatching asynchronous events with ordering guarantees.
42 9 J. Wienke
43 9 J. Wienke
h2. Misc
44 9 J. Wienke
45 9 J. Wienke
Collection of various utility classes including:
46 9 J. Wienke
* *Registry*: Key-value based registry for system components.
47 9 J. Wienke
* *UUID*: Simplified wrapper for boost::uuid.
48 9 J. Wienke
* Various utility functions for string manipulation or boost::shared_ptr handling.
49 9 J. Wienke
50 4 J. Wienke
h2. CMake Support Library
51 4 J. Wienke
52 1 J. Wienke
RSC contains different CMake scripts and macros which are generally useful. These include:
53 10 J. Wienke
* Find macros for various software packages like spread, BoostUUID, Eigen2, Log4cxx
54 2 J. Wienke
* *EnableConverageReport*: Support for html code coverage reports on GCC using gcov and lcov.
55 1 J. Wienke
* *CheckInitMethod*: Checks which compiler-specific method can be used to execute before the main method begins. This is e.g. useful to install extensions
56 1 J. Wienke
* *InstallFilesRecursive*: A macro to install files while preserving their folder structure. The normal install macro of CMake copies all given files into a flat list at the target location.
57 1 J. Wienke
* *ParseArguments*: Helper to parse arguments to CMake macros and functions with UPPERCASE keywords to separate lists.
58 1 J. Wienke
59 5 J. Wienke
All CMake files are installed to @$prefix/share/cmake/Modules@ and available in the repository at source:/trunk/rsc/cmake.