Hi all,
The last few days I've been working on the CMake files and macros used to
build Celix.
The build has changed, and some targets are removed.
Main improvements are:
* When building a single target, only the requested library and bundle are
build. Previously all libraries where build prior to creating a single
bundle.
* When deploying a target, only the required dependencies are build,
previously all libraries where build
* No separate bundle and package target needed. This now is performed
implicitly by building a target
* Improved "up-to-date" usage, when target is deployed, dependencies are
only build when needed. Previously the bundles where always recreated. This
drastically improves the time needed to redeploy targets.
* Added bundles, packages and deployments to the clean target, previously
files remained when running a clean
Also, now a bundle can be made directly, instead of first adding a library
(add_library). To create a bundle, the following macro must be used:
bundle({bundle_name} SOURCES {sources list} DIRECTORIES {optional
directories} FILES {optional files})
Previously this would have been:
add_library({bundle_name} SHARED {sources list})
bundle({bundle_name} DIRECTORIES {optional directories} FILES
{optional files})
All the include_directories and target_link_libraries remain the same.
Above bundle macro will result in a target with the same name
({bundle_name}). Running this target takes care of only building that
bundle (and required dependencies).
So the following targets are available:
make all -> build all libraries, bundles and packages
make deploy -> deploys all deployments
make {bundle_name} -> build a single bundle (and dependencies)
make deploy_{deployment_name} -> deploys a single deployment (and
dependencies)
make clean -> removes all deployments, bundles, libraries etc
make install-fw -> creates a framework.zip file with the framework,
headers and optionally some bundles (this can be used to have a packaged
version of the framework)
Also it is possible to enter sub directories of the build and run the build
from there. So when running make from "build/shell" only the shell (and
dependencies) will be build. This is the same as running "make shell" in
the build root.
I will probably check this in later today, if there are any more problems
with, or any ideas to improve, the build, feel free to drop a message!
--
Met vriendelijke groet,
Alexander Broekhuis