Bake

Bake is a build automation utility somewhat akin to the Ruby tool Rake. Like Rake, Bake definition files (or bakefiles) are written in pure Ruby. The similarities between Rake and Bake pretty much end there, however. Bake generally takes a much higher level approach. Instead of defining tasks and specifying the commands that get executed by that task, you define high level products, such as C++ libraries or Java WAR files in your bakefiles. Thus bakefiles are simple, readable definitions of the final products of your project.

Download

You can download the most recent version of Bake at here

Installation

Currently, Bake only support Gem installs. Simply run:

% gem install bake

If you don’t like how Gems taste, it’s probably not difficult to set up Bake from source. Download one of the source distributions and let me know how it works out :)

Further Reading

Tutorial Introduction

TUTORIAL

Concepts

CONCEPTS

Reference

REFERENCE

History

Bake took inspiration from the many great build tools that exist out there. In particular, the idea of using Ruby as a domain specific language for build systems was pioneered Jim Weirich in his Make-like utility, Rake. After working with Rake for some time, however, I found that it was difficult to maintain large projects effectively due to the fact that Rake is quite low-level.

Soon after I abandoned Rake, I found another great Ruby-based system called Rant created by Stefan Lang. Rant was slightly better and it had many great ideas for how a Ruby-based build system should work such as improved error messages, good support for larger multi-file projects, etc. I tried for a time to write Bake as extensions to Rant since I felt it a good starting point. In the end, however, it had similar limitations to Rake and I abandoned further work on Rant.

On the other end of the spectrum there’s Boost.Build which is the build system used for the Boost C++ Libraries. Boost.Build does have a reasonably good project-based approach, however, the syntax is abominable. It’s based on Perforce Jam which is quite possibly the most hideous build system ever conceived. Ugly doesn’t begin to describe the syntax, nor incomprehensible the so-called Jamfiles.

The panacea is Bake. I think it satisfies my rather loose requirements: pretty, simple for simple projects, powerful for large projects and fast. The items in this list are at various stages in their evolution, but I think it solves my build problems better than any of the others I listed above.

License

:include: MIT-LICENSE