# Sample Makefile # IMPORTANT! this file contains TABs ('\t') and they must not be converted to spaces (' ') by your text editor # the following macros are predefined # there will be something in them even if you do not redefine them CC =g++ CFLAGS =-Wall -O2 AR =ar # standard program to create libraries is ar ARFLAGS = # none at this time LD =g++ # standard linker is ld and it would not work for us with CC as g++!! LDFLAGS =-O2 # -lxnet # make all is the default make "target" to run all: http_one http_echo # for example in order to do http_one # - you need to have current tnplib.o http_one.o # - if/after you have them current you need to run command(s) from next indented lines http_one: tnplib.o http_one.o $(LD) tnplib.o http_one.o $(LDFLAGS) -o http_one http_echo: tnplib.o http_echo.o $(LD) tnplib.o http_echo.o $(LDFLAGS) -o http_echo tnplib.o: tnplib.cpp tnplib.h $(CC) $(CFLAGS) -c tnplib.cpp -o tnplib.o # this line above that specifies the rule is not necessary because of macro rule %.o:%.cpp below # you can list all dependencies in one line http_one.o: tnplib.h http_one.cpp # or you can list them one by one OR a few at a time and they will be merged together http_echo.o: tnplib.h # what happened to the rule what to do? it is burried in the macro %.o:%.cpp http_echo.o: http_echo.cpp # what happened to the rule what to do? it is burried in the macro %.o:%.cpp # or you can make them as macros like in the two examples below. # in that case it will be tested for each xxx.o if there is xxx.c or xxx.cpp # and it/they not need to be processed %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ %.o: %.cpp $(CC) $(CFLAGS) -c $< -o $@ # actually these .o.c and .o.cpp and many more macros are predefined. Run "make -p" to find out more clean: rm -rf *.o *~ http_one http_echo tar: tar cf code.tar Makefile *.cpp *.h gzip -f code.tar # more than one command may be specified as long as they are intended with a TAB/TABs, no space ' '!!!