Edit me

Explains the various linking styles. To recap, each library has a set of dependencies, which are more libraries. The dependencies are searched for in the cmake files.

In a real life example mulle-sprintf depends on:

mulle-buffer
mulle-utf
mulle-vararg
mulle-thread

As each dependency may have more dependencies, this expands to:

mulle-buffer
   mulle-allocator
   mulle-c11
   mulle-data
mulle-utf
mulle-vararg
mulle-thread

All these libraries must be linked to the executable. mulle-sde and cmake do this for you automatically. If you do not want to use mulle-sde you need to take care of all the loose ends yourself.

Startup libraries

For Objective-C executables we also need to add a so called startup library, that initialized the runtime. In case of the Foundation this will be the Foundation-startup.