Falls wer sich dafür interessiert, hier eine bessere Makefile. Ich habe leider keine Ahnung, wie ich komplizierteres Shellscript in die Makefile einbinde, deswegen habe ich das ganze als externe Datei realisiert, wers besser kann, kann sich hier ja mal melden...
Auch habe ich es eingestellt, dass die Befehle selber nicht angezeigt werden, dadurch wirds zwar übersichtlicher, aber das Makefile wird evtl schwerer zu debuggen.
Makefile:
Code:
SRC = src/main.cpp src/source2.cpp
OBJ = $(SRC:src/%cpp=obj/%o)
CFLAGS = -I "include"
CXXFLAGS = $(CFLAGS)
all: depend program
clean:
@echo "Cleaning up."
-@rm obj/*.o
-@rm program
depend:
@echo "Generating dependencies."
@./updatedepend "$(SRC)" "$(CFLAGS)"
rebuild: clean all
program: $(OBJ)
@echo "Linking $@."
@gcc $(OBJ) -o $@ -lSomeLibrary
obj/%o: src/%cpp
@echo "Compiling $<."
@$(CXX) -c -o $@ $< $(CXXFLAGS)
obj/%o: src/%c
@echo "Compiling $<."
$(CC) -c -o $@ $< $(CFLAGS)
-include .depend
updatedepend (muss auf ausführbar gestellt werden):
Code:
#!/bin/bash
rm .depend
for file in $1
do
filename=${file/#src/obj}
g++ -MM -MT ${filename/%cpp/o} $file $2 >> .depend;
done
Also insgesamt nicht gerade elegant, da ich mich mit Skripten nich gut auskenne, aber durchaus brauchbar
EDIT: Das ganze funzt natürlich auch unter Windows + MinGW, sogar mit Code::Blocks, wenn man eine externe Makefile einstellt!
EDIT2: Was laber ich eigentlich... nur die erste Version funzt, für die 2. bräuchte man die Bash, die ist für Windows zB bei den UnxUtils oder Cygwin dabei...