Rules tell the makefile what to do to maintain each desired output file or result. The central notion on which the make utility is built is that of dependency . Similarly, an executable file depends on all of the object files that compose it, through linking. Otherwise, the file is out of date. Similarly, any result which depends on another result which is not a file is automatically out of date.
Targets are the names of the results - either names of files, or names of other results.
Commands tell make what to do to bring targets up to date. The first line of a rule specifies targets and dependencies, separated by a colon, target to the left. Here is a simple example, containing several make rules. Two of them describe how the command ex1 depends on the object file ex1.o and on the source file ex1.c. The view rule depends on blah.ps, so executing the view rule first causes the rule with target blah.ps to be executed.