Instructor Notes
Andrew Fraser derived this tutorial from the Software Carpentry make-novice lesson. Most of the material has been modified a lot. This document has only been pruned.
Make is a popular tool for automating the building of software - compiling source code into executable programs.
Though Make is nearly 40 years old, and there are many other build tools available, its fundamental concepts are common across build tools.
Researchers are finding Make of use in implementing reproducible research workflows, automating data analysis and visualization (using Python or R) and combining tables and plots with text to produce reports and papers for publication.
Beware of Spaces!
The single most commonly occurring problem will be students using spaces instead of TABs when indenting actions.
Makefile Dependency Images
Some of these pages use images of Makefile dependencies, in the
fig directory.
These are created using [makefile2graph], which is assumed to be in
the PATH. This tool, in turn, needs the dot
tool, part of [GraphViz][graphviz].
Beware of different Make implementations!
The lesson is based on GNU Make. Although it is very rare, on some
systems (e.g. AIX) you might find make not pointing to GNU
Make and gmake needs to be used instead.