# Makefile 5: Automatically generating dependencies ################################### # Overriding default macros # For compiling C files CC = gcc CFLAGS = -Wall -g # For compiling C++ files CXX = g++ CXXFLAGS = -Wall -g # For linking LDFLAGS = # For creating a library AR = ar ARFLAGS = rc # End of defaults ################################### ################################### # Let's define sone additional variables RANLIB = ranlib SRC = main-queue.c main-stack.c queue.c stack.c PROGRAMS = main-stack main-queue MAIN_STACK_DEPS = main-stack.o stack.o LIB_DEPS = queue.o stack.o LIB = libdata.a MAIN_QUEUE_DEPS = main-queue.o $(LIB) MAIN_QUEUE_LIBS = -L. -ldata ################################### all: $(PROGRAMS) libdata.a: $(LIB_DEPS) $(AR) $(ARFLAGS) $@ $(LIB_DEPS) $(RANLIB) $@ main-stack: $(MAIN_STACK_DEPS) main-queue: $(MAIN_QUEUE_DEPS) $(CC) $(LDFLAGS) -o $@ $< $(MAIN_QUEUE_LIBS) depend: $(SRC) rm .depend $(CC) -MM $^ > .depend include .depend clean: rm -f *.o $(PROGRAMS) $(LIB)