Hopefully during your student career you are going to develop a really large program... Files often change, and having to check every line of your make file to add and delete new files can be a nightmare!
For this reason we use variables on Makefiles.
Here is a rewrite of the Makefile for Lab04 Step 4:
CC = g++ # for the compiler we are going to use CFLAGS = -c -g -Wall # to keep the options I want to pass to the compiler DEPS = functions.h LDFLAGS = # hmm: What might this Macro be used for? SOURCES = main.cpp functions.cpp OBJECTS = $(SOURCES:.cpp=.o) # means copy .cpp names to .o names ;-) EXECUTABLE = hello # for the executable program's name all: $(SOURCES) $(EXECUTABLE) $(EXECUTABLE) : $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) -o $@ main.o : main.cpp functions.h $(CC) $(CFLAGS) main.cpp functions.o : functions.cpp functions.h $(CC) $(CFLAGS) functions.cpp clean: rm $(EXECUTABLE) $(OBJECTS)
Ok much better... One of your homework questions contains an even more powerful makefile.
Prepared by Stratos Dimopoulos.