Make

Make is a unix tool that provides a dependency-based way to execute commands.

The make command takes a parameter, known as the target which is usually the name of a file you would like to generate, or set of commands you would like to run.

Best Practices

Include a help target in the Makefile. This can be automatically generated from comments in the Makefile. There are many forms for this - this one is recommended:

# makefile example...

This will work on both GNU and BSD implementations (sed specifically).

Formatting

Each line of a Makefile is a new shell invocation - if you need to maintain the state of a shell (ex: entering a virtualenv, setting variables, etc.) you should wrap lines with ;\\ to separate individual commands while retaining the same shell instance.