CXXFLAGS = -g -Wall -D_REENTRANT
LIBS = -lGL \
-lboost_unit_test_framework \
-lboost_serialization
INCPATH = -Iapp \
-Icritter \
-Ienvironment \
-Igraphics \
-Iui \
-Iutils \
-I/usr/local/Trolltech/Qt-4.4.3/include/QtCore \
-I/usr/local/Trolltech/Qt-4.4.3/include/QtGui \
-I/usr/local/Trolltech/Qt-4.4.3/include/QtOpenGL \
-I/usr/local/Trolltech/Qt-4.4.3/include \
-I/usr/include/GL
all : TestGenome.o brain.o BrainParam.o misc.o genome.o
g++ $(CXXFLAGS) \
TestGenome.o \
brain.o \
BrainParam.o \
misc.o \
genome.o \
$(LIBS) \
$(INCPATH)
./a.out
TestGenome.o: test/TestGenome.cpp
g++ -c $(CXXFLAGS) test/TestGenome.cpp $(INCPATH)
brain.o: critter/brain.cp critter/brain.h
g++ -c $(CXXFLAGS) critter/brain.cp $(INCPATH)
BrainParam.o: critter/BrainParam.cp critter/BrainParam.h
g++ -c $(CXXFLAGS) critter/BrainParam.cp $(INCPATH)
misc.o: utils/misc.cp utils/misc.h
g++ -c $(CXXFLAGS) utils/misc.cp $(INCPATH)
genome.o: critter/genome.cp critter/genome.h
g++ -c $(CXXFLAGS) critter/genome.cp $(INCPATH)
If you look at the line beginning with 'brain.o:' you'll see that it is followed by 'critter/brain.cp' and 'critter/brain.h'. This specifies that if 'critter/brain.cp' or 'critter/brain.h' changes, then brain.o should be recompiled.
Though this is useful, there are still problems with dependencies. For example, what if 'critter/brain.h' refers to another header file that has changed? I'm not sure but I'll follow up on that soon.
No comments:
Post a Comment