Skip to content
SPECIFICTION
Get listed

Shake

shakebuild.com

Free plan WindowsmacOSLinux
Visit shakebuild.com
Spec score 7.8 #18 of 42 in Build Automation Software

What it is

Shake is an open-source Haskell library for writing build systems, positioned as an alternative to make, Ant, and SCons. Build rules can discover dependencies after earlier rules run, including dependencies revealed by generated files. Supported dependency inputs include files, file existence, environment variables, directory contents, and user-defined values. Shake provides parallel and multicore builds, resource constraints, build caching, and avoids rebuilding outputs when dependency changes do not alter results. Profiling reports can include plots, tables, graphs, and explanations of what built and why. It reports estimated completion time and percentage complete, with progress information usable in continuous-integration systems such as Team City. Shake can execute Ninja files for integration with CMake and Meson, and can build projects using mixed languages, including C/C++, Docker, JavaScript, HTML, and CSS. Build definitions are Haskell programs, although the manual targets readers without prior Haskell knowledge. Shake runs on Linux, macOS, and Windows and is licensed under BSD. Installation uses Haskell Stack followed by `stack install shake`.

Spec sheet

Purpose
Shake is a Haskell library for writing build systems as an alternative to tools such as make, Ant, and Scons.Read 9 Oct 2026 · shakebuild.com
Audience
Shake is aimed at developers running and writing build systems, especially for large projects that need expressive rules, robust builds, and profiling.Read 9 Oct 2026 · shakebuild.com
Integrations
Shake can execute Ninja files, allowing integration with CMake and Meson.Read 9 Oct 2026 · shakebuild.com
Support
Users can ask questions through the mailing list or Stack Overflow, and report bugs through GitHub issues.Read 9 Oct 2026 · shakebuild.com
License
Shake is an open source project under the BSD license.Read 9 Oct 2026 · shakebuild.com
Build performance
Shake supports parallel builds and is designed for fast execution when nothing has changed.Read 9 Oct 2026 · shakebuild.com
Completion estimates
Shake can report estimated completion time and percentage complete, and its progress information can be integrated with continuous integration systems such as Team City.Read 9 Oct 2026 · shakebuild.com
Dependency types
Shake supports dependencies on files, file existence, environment variables, directory contents, and user-defined inputs.Read 9 Oct 2026 · shakebuild.com
Diagnostics
Shake can generate profiling reports with plots, tables, graphs, and information about what built and why.Read 9 Oct 2026 · shakebuild.com
Dynamic dependencies
Build rules can discover additional dependencies after earlier rules run, such as by examining generated files.Read 9 Oct 2026 · shakebuild.com
Installation
The site’s getting-started instructions say to install Haskell Stack and then run `stack install shake`.Read 9 Oct 2026 · shakebuild.com
Language support
Shake can build projects in any combination of languages and is often used for C/C++, Docker, and JavaScript, HTML, and CSS projects.Read 9 Oct 2026 · shakebuild.com
Languages
Shake build systems are Haskell programs, though the manual is designed for readers without prior Haskell knowledge.Read 9 Oct 2026 · shakebuild.com
Limitations
Shake build systems are written in Haskell, Shake may not be installed by default, and it provides no default build rules.Read 9 Oct 2026 · shakebuild.com
Notable limitation
Shake does not provide default build rules, so users must express their build rules themselves.Read 9 Oct 2026 · shakebuild.com
Performance
Shake supports multicore parallelism, resource constraints, and avoids rebuilding results when dependencies rebuild without changing.Read 9 Oct 2026 · shakebuild.com
Platform details
Shake can display progress information in the title bar on Windows, Linux, and Mac; Windows 7 and 8 can also show it in the taskbar.Read 9 Oct 2026 · shakebuild.com
Progress estimates
Shake reports estimated completion time and percentage complete using recorded rule execution times and machine-load predictions.Read 9 Oct 2026 · shakebuild.com
What it is
Shake is a Haskell library for writing build systems, designed as a replacement for make.Read 9 Oct 2026 · shakebuild.com
Who it serves
Shake primarily benefits developers who run build systems and developers who write them.Read 9 Oct 2026 · shakebuild.com

Plans and prices

Shake Free Open source under the BSD license · install with Haskell Stack Read 9 Oct 2026 · shakebuild.com

Every Shake plan and price →

Strong points and limits

Strong points

  • Dynamic dependency discovery
  • Parallel builds with resource constraints
  • Profiling reports explain build work
  • Ninja, CMake, and Meson integration
  • Open source under BSD license

Limits

  • Build systems must be written in Haskell
  • No default build rules are provided
  • Requires Haskell Stack installation

Who it suits

Shake is for developers who write or run build systems, particularly on large projects needing expressive rules, parallel execution, caching, and profiling. It also fits teams integrating Ninja, CMake, Meson, or continuous-integration progress reporting.

Verdict

Shake offers programmable build orchestration with dynamic dependencies, caching, diagnostics, and multicore execution. Its Haskell-based model and requirement to define every rule are central considerations before adoption.

Where Specifiction places it

Alternatives to ShakeAll alternatives →