All pastes #169580 Raw Edit

Untitled

public text v1 · immutable
·published 2006-09-14 00:45 UTC
rendered paste body
#*************************************************************************
#  MP1 Makefile
#*************************************************************************

#*************************************************************************
# To begin our Makefile, we want to create various helpful macros.
#
# First of all, we need to name our program. The "executable file" is the 
# actual program -- all the individual compiled files linked together.

NAME_OF_EXECUTABLE_FILE = mp1

# Next, we want to define which C++ compiler we are using and what options
# we are using for that compiler. 

COMPILER = g++ 
COMPILER_OPTS = -c -g

# Next, we want to define which program we are using to link all our
# files together (often, we are using the compiler we used to compile them
# in the first place) and what options we are using for that linker.

LINKER = g++ 
LINKER_OPTS = -o $(NAME_OF_EXECUTABLE_FILE)

# Finally, we want a list of all the .o files (object files) that 
# NAME_OF_EXECUTABLE_FILE depends on. That is, we want a list of all 
# the object files that make up the program. 

OBJS = asserts.o string.o office.o building.o main.o

# And that is it for the macros; we now are ready to compile and link
# the program.
#**************************************************************************


#************************************************************************
# Rule for linking the program.

$(NAME_OF_EXECUTABLE_FILE) : $(OBJS)
	$(LINKER) $(LINKER_OPTS) $(OBJS)

# And that is it for the linking step! However, the assorted .o files 
# must be created before the above line can finish, so the compilation
# rules below get run before the above rule can finish.
#************************************************************************


#**************************************************************************
# Rules for performing the compilation of each individual object file.

asserts.o : asserts.h asserts.cpp
	$(COMPILER) $(COMPILER_OPTS) asserts.cpp

string.o : string.h string.cpp asserts.h
	$(COMPILER) $(COMPILER_OPTS) string.cpp

office.o : office.h office.cpp string.h
	$(COMPILER) $(COMPILER_OPTS) office.cpp

building.o : building.h building.cpp string.h office.h
	$(COMPILER) $(COMPILER_OPTS) building.cpp

main.o : main.cpp asserts.h string.h office.h building.h
	$(COMPILER) $(COMPILER_OPTS) main.cpp

# And now we have created all the individual object files specified with 
# the macro "OBJS". 
#************************************************************************


#***********************************************************************
# The "clean" rule -- triggered with the command "make clean" -- will
# erase any files created by the compilation. That is, it cleans up
# the directory you are in, so that the next compilation must proceed
# completely from scratch. This is sometimes very helpful.

clean:
	-rm *.o $(NAME_OF_EXECUTABLE_FILE)
	-rm -rf SunWS_cache

# 
#***********************************************************************