name mode size
fetch 040000
mulle-brew 040000
settings 040000
steps 040000
CMakeLists.txt.example 100644 2 kb 100644 1 kb 100644 5 kb 100644 1 kb 100644 1 kb 100644 1 kb 100644 2 kb 100755 0 kb 100644 2 kb
[comment]: <> (DO NOT EDIT THIS FILE. EDIT THE TEMPLATE "templates/") # mulle-bootstrap, cross platform dependency manager using bash ![Last version]( ... for Linux, OS X, FreeBSD, Windows ... for C, C++, Objective-C ... certainly not a "minimal" or "lightweight" project with ca. 10000 lines of shell script code ## Why you may want it * You program in C, C++ or in Objective-C, **mulle-bootstrap** is written for you * If you need to link against a library, that clashes with an installed library, **mulle-bootstrap** could break this quandary * If you feel that `apt-get install` pollutes your system with too many libraries, **mulle-bootstrap** may be the solution * If you don't like developing in virtual machines, **mulle-bootstrap** may tickle your fancy * If you like to decompose huge projects into reusable libraries, **mulle-bootstrap** may enable you to do so * If you do cross-platform development, **mulle-bootstrap** may be your best bet for a dependency manager ## Core principles * Nothing gets installed outside of the project folder * **mulle-bootstrap** manages your dependencies, it does not manage your project * It should be adaptable to a wide ranges of project styles. Almost anything can be done with configuration settings or additional shell scripts. * It should be scrutable. If things go wrong, it should be easy to figure out what the problem is. It has extensive logging and tracing support built in. * It should run everywhere. **mulle-bootstrap** is a collection of shell scripts. If your system can run the bash, it can run **mulle-bootstrap**. ## What it does technically * downloads [zip]( and [tar]( archives * fetches [git](// repositories and it can also checkout [svn](// * builds [cmake](//, [xcodebuild](// and [configure](// projects and installs their output into a "dependencies" folder. * installs [brew](// binaries and libraries into an "addictions" folder (on participating platforms) * alerts to the presence of shell scripts in fetched dependencies ## A first use So you need a bunch of third party projects to build your own project ? No problem. Use **mulle-bootstrap init** to do the initial setup of a `.bootstrap` folder in your project directory. Then add the git repository URLs: ``` mulle-bootstrap init mulle-bootstrap setting -g -r -a "repositories" "" mulle-bootstrap setting -g -r -a "repositories" "" mulle-bootstrap ``` **mulle-bootstrap** will check them out into a common directory `stashes`. After cloning **mulle-bootstrap** looks for a `.bootstrap` folder in the freshly checked out repositories. They might have dependencies too, if they do, those dependencies are added and also fetched. Everything should now be in place so **mulle-bootstrap** that can now build the dependencies. It will place the headers and the produced libraries into the `dependencies/lib` and `dependencies/include` folders. ## Tell me more * [How to install](dox/ * [How to use it](dox/ * [What has changed ?]( * [Tweak guide](dox/ * [CMakeLists.txt.example](dox/CMakeLists.txt.example) shows how to access dependencies from **cmake** * [FAQ](dox/ * [mulle-bootstrap: A dependency management tool]( * [mulle-bootstrap: Understanding mulle-bootstrap (I)]( * [mulle-bootstrap: Understanding mulle-bootstrap (II), Recursion]( If you want to hack on mulle-bootstrap, I'd recommend to get [Sublime Text](// and [install the linter plugin](// to use [Shellcheck](// It simplifies shell scripting by an order of magnitude. ## GitHub and Mulle kybernetiK The development is done on [Mulle kybernetiK]( Releases and bug-tracking are on [GitHub](