blob: 819d42b06e60e4669ed6d2bee4ad0e51319700a6 [file] [log] [blame]
APACHE CELIX - BUILDING AND INSTALLATION OVERVIEW
Notes
-----
* Currently Apache Celix only builds and works on Unix/Linux like systems
(including MacOSX).
* Apache Celix requires CMake for building, other requirements/dependencies are
listed per subproject on http://celix.apache.org/subprojects.html
* More information about the build system, and how to extend it, can be found at
the website: http://celix.apache.org/documentation.html
Quick Start
-----------
# Create a build directory next to the celix source directory
$ mkdir celix-build; cd celix-build
$ ccmake ../celix
# When this is the first time the CMake cache is created, a configuration has to be created
# This is done by running Configure (c) in CMake.
# Enable/Disable the required sub projects (BUILD_{NAME} entries)
# Optionally, enable advanced mode (t) and change CMAKE_INSTALL_PREFIX
# Run Configure (might be needed multiple times)
# Run Generate (this also returns to the shell)
$ make
# To deploy the included examples
$ make deploy
# Navigate to <subproject>/deploy/<deployname>
$ sh run.sh
# To install the release (framework, headers and bundles)
$ make install-all
# To see a list of all available targets
$ make help
Unit testing using CppUTest
---------------------------
Apache Celix has build options that enable a set of unit tests for each component. These tests
are based on CppUTest, which needs to be installed separately.
To run the tests
$ make test
To get a HTML page with the test coverage
$ make coverage
The coverage results are found in <build_dir>/coverage_results/index.html
Background information
----------------------
Apache Celix uses CMake to generate the build files needed for compilation.
deployment and installation.
* CMake (http://www.cmake.org)
CMake generated build files based on specific CMake files. To setup a build
a console (ccmake) and GUI (cmake-gui) method is provided. With these editors
include paths, installation prefix etc can be changed.
CMake stores the configuration in a cache, which is used during the build.
To keep the cache/build files separate from the source, a out-of-source build
is preferred. To start from scratch, the build directory can be deleted and
new build files can be generated.
* Apache Celix Subprojects
Since Apache Celix provides a modular framework, it makes sense to provide the
available components as modules as well. To enable/disable these modules cmake
is used. In the GUI or console there are settings named BUILD_{NAME} which can
be switched on or off. On http://celix.apache.org/subprojects.html a
list of all subprojects is given.
* Apache Celix deployment/installation
With a modular system it doesn't make sense to simply install everything to
the file system. Depending on the needs different version/modules can be
needed.
To cater for this, Celix provides deployment support which takes care of
copying the required bundles to a named target. A basic run script is
created as well.
Installing the framework (and its dependencies) might make sense, every target
needs the framework. To install only the framework a dedicated target is
available: make install-release.