CXX = g++ CPPFLAGS = -Wall -g -std=c++11 # Disable return value optimization for the copy-constructor example: CPPFLAGS_NOMOVE = -Wall -g -std=c++11 -fno-elide-constructors # Excludes uniquefail and uniquevec PROGS = vectoralgos listexample mapexample usetoy unique1 unique2 unique3 unique4 copysemantics movesemantics # default target builds all executables all: $(PROGS) Tracer.o: Tracer.cc Tracer.h $(CXX) $(CPPFLAGS) -c $< # algorithms example (sort, for-each) vectoralgos: vectoralgos.o Tracer.o $(CXX) $(CPPFLAGS) -o $@ $^ vectoralgos.o: vectoralgos.cc Tracer.h $(CXX) $(CPPFLAGS) -c $< # list example listexample: listexample.o Tracer.o $(CXX) $(CPPFLAGS) -o $@ $^ listexample.o: listexample.cc Tracer.h $(CXX) $(CPPFLAGS) -c $< # map example mapexample: mapexample.o Tracer.o $(CXX) $(CPPFLAGS) -o $@ $^ mapexample.o: mapexample.cc Tracer.h $(CXX) $(CPPFLAGS) -c $< # ToyPtr example usetoy: usetoy.cc ToyPtr.h $(CXX) $(CPPFLAGS) -o $@ $< # unique1 example unique1: unique1.cc $(CXX) $(CPPFLAGS) -o $@ $< # unique2 example unique2: unique3.cc $(CXX) $(CPPFLAGS) -o $@ $< # unique3 example unique3: unique3.cc $(CXX) $(CPPFLAGS) -o $@ $< # unique4 example unique4: unique4.cc $(CXX) $(CPPFLAGS) -o $@ $< # uniquefail example (does not compile, so not in $PROGS) uniquefail: uniquefail.cc $(CXX) $(CPPFLAGS) -o $@ $< # uniquevec example (also doesn't compile, so not in $PROGS) uniquevec: uniquevec.cc $(CXX) $(CPPFLAGS) -o $@ $< # copysemantics example copysemantics: copysemantics.cc Tracer.o $(CXX) $(CPPFLAGS_NOMOVE) -o $@ $^ # movesemantics example movesemantics: movesemantics.cc $(CXX) $(CPPFLAGS) -o $@ $< # phony target - remove generated files and backups clean: rm -f *.o $(PROGS) *~