God knows I wrote one or the other Makefile in my life. But I always found it kind of a struggle. For really small projects I therefore preferred shell scripts. For really large projects Automake seemed like the way to do it. But Automake creates a bunch of files, with practically unmanageable (and unreadable) makefiles. Lastly it creates yet another dependency and needs the original make to run.
In one of my academic projects I therefore decided to switch to another build system. I had quite some systems in my mind. Initially I wanted to go for FAKE, which is a F# based DSL build system. The major problem is that we purely use Linux and in reality no machine has Mono / the F# compiler (or even FAKE) installed. There are similar choices as well:
- Rake (Ruby based Make)
- CMake (C based Make)
- Maven (Java based)
- node runs quite well on Linux and can be easily installed via any package manager
- npm installs tools such as Jake easily and via CLI
I will publish a short article on this matter on my homepage soon. There I will describe what changed and why I guess it is an improvement. Additionally this should be better (and much more practical) than the documentation of Jake, which is not very good. I learned more about the software by looking at the source-code (thank god for the whole open-source movement).