predefined variables: $@ full name of current target $? list of files for current dependency which are out-of-date $< first prerequisite $^ all dependencies $+ all dependencies, with repetitions! pattern substitution: OBJS = data.o io.o main.o $(OBJS:.o=.c) ==> data.c io.c main.c .PHONY --- tells make which targets are *not* files