############################################################################## # # Sample Makefile for C/C++ applications for the UTSC environment. # Works for single and multiple file programs. # ############################################################################## # Define C compiler CC = gcc # Define C++ compiler CCC = /usr/bin/g++ # Define C compiler options CFLAGS = -Wall -c -g # Define C++ compiler options CCCFLAGS = -Wall -c -g # Define C/C++ pre-processor options CPPFLAGS = -I./ -I$(GLUIDIR)/include -I$(GLDIR)/include \ -I$(XLIBDIR) # Define location of GLUT directory (/usr/local for UTSC) #GLUTDIR = /usr/local GLUTDIR = /usr # Define location of OpenGL directory (/usr/local for UTSC) #GLDIR = /usr/local GLDIR = /usr # Define location of GLUI directory #GLUIDIR = /usr/X11R6 GLUIDIR = ../glui_v2_2 # Define location of OpenGL and GLU libraries along with their lib names GL_LIBS = -L$(GLDIR)/lib -lGLU -lGL # Define location of Glut libraries along with glut lib name GLUT_LIBS = -L$(GLUTDIR)/lib -lglut # Define location of GLUI libraries along with glui lib name GLUI_LIBS = -L$(GLUIDIR)/lib -lglui # Define location of the X11 Windows directory (for X11 Windows header files) XLIBDIR = /usr/include # Define location of X Windows libraries, and the X11 library names XLIBS = -L/usr/X11R6/lib -lX11 -lXi -lXmu # Define the location of the destination directory for the executable file DEST = . # Define the location of all header file directories INCDIR = $(GLUIDIR)/include $(GLDIR)/include /usr/local/include/ # Define flags that should be passed to the linker LDFLAGS = # Define libraries to be linked with LIBS = $(GLUI_LIBS) $(GL_LIBS) $(GLUT_LIBS) -lm $(XLIBS) -ldl # Define linker LINKER = g++ # Define all object files to be the same as CPPSRCS but with all the .cpp and .c suffixes replaced with .o OBJ = $(CPPSRCS:.cpp=.o) $(CSRCS:.c=.o) # Define name of target executable PROGRAM = dog # Define all C source files here CSRCS = # Define all C++ source files here CPPSRCS = dog.cpp vector.cpp ############################################################################## # Define additional rules that make should know about in order to compile our # files. ############################################################################## # Define default rule if Make is run without arguments all : $(PROGRAM) # Define rule for compiling all C++ files %.o : %.cpp $(CCC) $(CCCFLAGS) $(CPPFLAGS) $*.cpp # Define rule for compiling all C files %.o : %.c $(CC) $(CFLAGS) $(CPPFLAGS) $*.c # Define rule for creating executable $(PROGRAM) : $(OBJ) @echo -n "Loading $(PROGRAM) ... " $(LINKER) $(LDFLAGS) $(OBJ) $(LIBS) -o $(PROGRAM) @echo "done" # Define rule to clean up directory by removing all object, temp and core # files along with the executable clean : @rm -f $(OBJ) *~ core $(PROGRAM)