# Makefile 2: Using macros and variables ################################### # Overriding default macros # For compiling C files #CC = gcc CFLAGS = -Wall -g # For compiling C++ files (we do not need it today) 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 PROGRAMS = main-stack main-queue LIBS = libdata.a STACK_OBJ = main-stack.o stack.o ################################### all: $(PROGRAMS) queue.o: queue.c queue.h $(CC) $(CFLAGS) -c queue.c stack.o: stack.c stack.h $(CC) $(CFLAGS) -c stack.c main-queue.o: main-queue.c queue.h $(CC) $(CFLAGS) -c main-queue.c main-stack.o: main-stack.c stack.h $(CC) $(CFLAGS) -c main-stack.c libdata.a: queue.o stack.o $(AR) $(ARFLAGS) libdata.a queue.o stack.o $(RANLIB) libdata.a main-stack: $(STACK_OBJ) $(CC) $(LDFLAGS) -o main-stack $(STACK_OBJ) main-queue: main-queue.o $(LIBS) $(CC) $(LDFLAGS) -o main-queue main-queue.o -L. -ldata clean: rm -f *.o $(PROGRAMS) $(LIBS)