When you run make in a project directory, the
make program looks at all productions and
timestamps and does the minimum amount of work necessary to make sure
derived files are up to date.
No discussion of
make(1)
would be complete without an acknowledgement that it includes one of
the worst design botches in the history of Unix. The use of tab
characters as a required leader for command lines associated with a
production means that the interpretation of a makefile can change
drastically on the basis of invisible differences in whitespace.
Why the tab in column 1? Yacc was new, Lex was brand new. I
hadn't tried either, so I figured this would be a good excuse to
learn. After getting myself snarled up with my first stab at Lex, I
just did something simple with the pattern newline-tab. It
worked, it stayed. And then a few weeks later I had a user population
of about a dozen, most of them friends, and I didn't want to screw up
my embedded base. The rest, sadly, is history.
--Stuart Feldman
[an error occurred while processing this directive]