A makefile is a set of commands that tell the compiler the build and link order as to generate an executable (or similar).It is usually parsed within a unix Shell, or similar command-line interpreter.

It indicates (in explicit detail), what compiles when, to what file name and type, and when to link to libraries or other resources. It is also a handy place to put feedback, so that the developer can see how the process is going. see nmake.