A universal build system to build your software at the push of a button.

Get Started »

Button is currently only supported on Linux, but there are plans to also support OS X and Windows soonish.


Implicit Dependency Detection

There is no need to exhaustively list dependencies (such as C++ header files). Dependencies for any language can be determined automatically.

Correct Incremental Builds

Outputs removed from the build are automatically removed from disk. Changes are determined by file contents, not just by timestamps. Combined with implicit dependency detection, correct incremental builds can be ensured.

Recursive Builds

Any build task can also be a build system. This simple feature is incredibly powerful. As part of the build, you can generate your build description with, say, a high-level scripting language like Lua.

Hands-free Building

Dependencies can be watched to automatically trigger a build when they change. This can help speed up the edit-compile-test development cycle.

Visualize Builds

A graph of the task graph can be displayed. This helps give you an immediate and intuitive understanding of the structure of your build.

Language Independent

This is not a language-specific build system. While there are convenient abstractions for building common languages, there are no restrictions on building projects not covered by those abstractions.