1. The following command:
make
makes the first target found in the makefile.
2. The following command:
make junk
makes the target junk.
3. The following makefile says that pgm depends on two files,
a.o and b.o, and that they in turn depend on their
corresponding source files (a.c and b.c), and a common file
incl.h:
.POSIX:
pgm: a.o b.o
c99 a.o b.o -o pgm
a.o: incl.h a.c
c99 -c a.c
b.o: incl.h b.c
c99 -c b.c
4. An example for making optimized .o files from .c files is:
.c.o:
c99 -c -O 1 $*.c
or:
.c.o:
c99 -c -O 1 $<
5. The most common use of the archive interface follows. Here,
it is assumed that the source files are all C-language
source:
lib: lib(file1.o) lib(file2.o) lib(file3.o)
@echo lib is now up-to-date
The .c.a rule is used to make file1.o, file2.o, and file3.o
and insert them into lib.
The treatment of escaped <newline> characters throughout the
makefile is historical practice. For example, the inference
rule:
.c.o\
:
works, and the macro:
f= bar baz\
biz
a:
echo ==$f==
echoes "==bar baz biz==".
If $? were:
/usr/include/stdio.h /usr/include/unistd.h foo.h
then $(?D) would be:
/usr/include /usr/include .
and $(?F) would be:
stdio.h unistd.h foo.h
6. The contents of the built-in rules can be viewed by running:
make -p -f /dev/null 2>/dev/null