Skip to content
This repository
branch: master
Octocat-spinner-32 Development comment typo of "invocation" April 02, 2014
Octocat-spinner-32 Examples Change the manual to build Shake locally April 02, 2014
Octocat-spinner-32 General fix incorrect serialization of long BinLists February 26, 2014
Octocat-spinner-32 academic Add a banner saying personal use for the ACM July 08, 2012
Octocat-spinner-32 docs #103, don't suggest -qg or -qb, unless running with -threaded April 02, 2014
Octocat-spinner-32 html If Viz is undefined say that you haven't built with GraphViz support March 15, 2014
Octocat-spinner-32 misc Catch exceptions while creating the ITaskbarList4 interface, part of #64 September 13, 2013
Octocat-spinner-32 .ghci Use ignore-package instead of hide-package November 18, 2013
Octocat-spinner-32 .gitignore Add an example associated with the manual October 25, 2013
Octocat-spinner-32 .travis.yml Add some relevant lines for grep March 20, 2014
Octocat-spinner-32 CHANGES.txt #103, don't suggest -qg or -qb, unless running with -threaded April 02, 2014
Octocat-spinner-32 LICENSE Update to year 2014 January 03, 2014
Octocat-spinner-32 Main.hs Move pieces around so the Makefile run is in Start, not System.Make May 30, 2013
Octocat-spinner-32 Paths.hs Make profile reports work even with changing directory June 03, 2013
Octocat-spinner-32 More tweaks to the README November 15, 2013
Octocat-spinner-32 Setup.hs Add a Setup.hs, as required by Cabal December 11, 2011
Octocat-spinner-32 Start.hs Move 4 modules out into General November 14, 2013
Octocat-spinner-32 Test.hs #103, add a test that the example from the manual builds and runs pro… April 02, 2014
Octocat-spinner-32 shake.cabal Add GHC 7.8.2 to the tested with April 14, 2014
Octocat-spinner-32 Makefile, fix up the shell script tester March 29, 2013
Octocat-spinner-32 travis.hs Give yourself 3 goes to outperform Ninja March 20, 2014

Shake Build Status

Shake is a tool for writing build systems - an alternative to make, Scons, Ant etc. Shake has been used commercially for over five years, running thousands of builds per day.


  • Why use Shake? Shake lets you write large robust build systems, which deal properly with generated source files and run quickly. If you are writing a custom build system of any moderate size (more than a few rules) you should use Shake. The advantages over other build systems are detailed in the document Why choose Shake?.
  • How do I use Shake? Shake is a Haskell library that you use to define your rules. The Shake manual provides a walk through of a small but realistic example, assuming no Haskell knowledge.
  • Generated documentation for all functions, includes lots of examples.
  • Running Ninja builds using Shake.
  • Blog posts detailing ongoing development work.
  • Academic paper on the underlying principles behind Shake.
  • Video of a talk introducing Shake.

Other links

  • Download the Haskell package from Hackage and install it using Cabal.
  • Mailing list for any questions/bugs/thoughts on Shake. If you need more information and aren't sure where to start, use the mailing list.
  • Questions can be asked on StackOverflow with the tag shake-build-system.
  • Bugs can be reported on the GitHub issue tracker.
  • Source code in a git repo, stored at GitHub.
Something went wrong with that request. Please try again.