ModesWhat gets builtWhat gets printedReportingLintingGeneral settings

Command line flags

Shake features a wide variety of command line flags, all shown with --help. Most of these flags map down to the ShakeOptions data type, and will be interpreted as such by shakeArgsWith.


There are a number of different modes in which Shake can run, which have an overarching effect on what Shake does. None of these are directly available from the Shake API.

What gets built

By default all want/action statements in Rules will be run. If any non-flag arguments are passed then these statements will be ignored, and the non-flag arguments will be passed to want. Calling want will build either phony rules or file rules (through %>). The remaining flags in this section control when things get built.

In addition, there are a number of flags for controlling whether files are treated as dirty despite being clean, or clean despite being dirty. The exact semantics remain somewhat confusing, and should be cleaned up.

What gets printed

These options control what gets printed to the console. All output produced by Shake goes through the shakeOutput function, which provides another point to control the output.


Shake can generate a number of different reports to help examine additional aspects of a build system.


Shake can perform additional checks on an execution using linting.

General settings

Finally there are some general settings, which control miscellaneous features of Shake.