# Makefile OBJS = term_control.o Lexer.o error_handling.o cmd.o cmd_driver.o CC = g++ DEBUG = -g CFLAGS = -Wall -pedantic -ansi -c $(DEBUG) LFLAGS = -Wall $(DEBUG) cmd_driver: $(OBJS) $(CC) $(LFLAGS) $(OBJS) -o cmd_driver cmd_driver.o : term_control.o Lexer.o cmd.o error_handling.o cmd_driver.cpp $(CC) $(CFLAGS) cmd_driver.cpp # the lexer_driver program lexer_driver: lexer_driver.o $(CC) $(LFLAGS) lexer_driver.o Lexer.o -o lexer_driver # only uses Lexer lexer_driver.o : Lexer.o lexer_driver.cpp $(CC) $(CFLAGS) lexer_driver.cpp # uses Lexer, term_control, error_handling cmd.o : Lexer.o error_handling.o term_control.o cmd.h cmd.cpp $(CC) $(CFLAGS) cmd.cpp # error handling routines make use of terminal control routines error_handling.o : term_control.o error_handling.h error_handling.cpp $(CC) $(CFLAGS) error_handling.cpp # the Lexer is fairly independent Lexer.o : Lexer.h Lexer.cpp $(CC) $(CFLAGS) Lexer.cpp # this object file is at the "lowest level" term_control.o : term_control.h term_control.cpp $(CC) $(CFLAGS) term_control.cpp clean: rm -f *.o a.out lexer_driver cmd_driver