Mein Makefile kompiliert immer alles, obwohl sich nichts geändert hat. Das Projekt ist nun schon so groß, dass es langsam nervt. Es soll doch der große Vorteil sein, sich ein Makefile zu erstellen um nicht jedes mal alles neu erstellen zu müssen.
Mein Makefile ist
Code: Alles auswählen
# variablen fuer compiler, makros
CC = g++
# binary name, den das programm bekommen soll
TARGET=pansolver
# sql makros
SQLDIR = ./db
SQL = $(SQLDIR)/sql.cpp
SQLFLAGS = -c -w
# pansolver makros
ALGOS_DIR = ./algo
ALGOS = $(ALGOS_DIR)/algo*.cpp $(ALGOS_DIR)/pansolver.cpp
INCLUDES = -I$(SQLDIR)
# die einzelnen schritte
STEPS = $(ALGOS_DIR)/step*.cpp
# die einzelnen regeln
RULES = $(ALGOS_DIR)/rule*.cpp
# klasse node
NODE = $(ALGOS_DIR)/node.cpp
# das PAN
PAN = $(ALGOS_DIR)/pan.cpp
# Tinahandling fuer die Arbeit mit Tina
TINAHANDLING = $(ALGOS_DIR)/tinahandling.cpp
all : pansolver
sql : $(SQL)
$(CC) $(SQL) $(SQLFLAGS)
pansolver : sql $(ALGOS) steps pan path tinahandling help
$(CC) $(ALGOS) $(INCLUDES) *.o -lsqlite3 -o $(TARGET)
steps : $(STEPS) path
$(CC) -c $(STEPS)
node : $(NODE) help
$(CC) -c $(NODE)
pan : rules $(NODE) $(PAN) help tuple term
$(CC) -c $(PAN)
help : $(ALGOS_DIR)/help.cpp
$(CC) -c $(ALGOS_DIR)/help.cpp
tuple : $(ALGOS_DIR)/tuple.cpp
$(CC) -c $(ALGOS_DIR)/tuple.cpp
path : $(ALGOS_DIR)/path.cpp tuple
$(CC) -c $(ALGOS_DIR)/path.cpp
term : $(ALGOS_DIR)/term.cpp help
$(CC) -c $(ALGOS_DIR)/term.cpp
rules : $(RULES)
$(CC) -c $(RULES)
tinahandling : $(TINAHANDLING) node help
$(CC) -c $(TINAHANDLING)
clean :
rm -f *.o pansolver
@echo alles entfernt
mfg
Stephan
PS: Wenn ihr Unschönheiten im Makefile entdeckt, würde ich mich über konstruktive Kritik freuen. Das ist mein allererstes Makefile.