make macht was es will
-
ich hab folgende Struktur:
src
|-main.cc
|-Makefile
|-depend.sh
|-UI
|-helloworld.cc
|-module.mk
|-helloworld.hdas Makefile sieht folgendermassen aus:
MODULES := UI CFLAGS += $(patsubst %,-I%, $(MODULES)) LIBS := SRC := main.cc include $(patsubst %, %/module.mk, $(MODULES)) OBJ := $(SRC:.cc=.o) all: prog @echo BUILDED prog: $(OBJ) @echo sali du da #$(CC) -o $@ $(OBJ) $(LIBS) $(CFLAGS) debug: @echo src: $(SRC) @echo @echo libs: $(LIBS) @echo @echo obj: $(OBJ) @echo @echo CFLAGS: $(CFLAGS) @echo @echo include: $(patsubst %, %/module.mk, $(MODULES)) @echo @echo build: $(CC) -o $@ $(OBJ) $(LIBS) $(CFLAGS) include $(OBJ:.o=.d) %.d: %.cc ./depend.sh `dirname $*.cc` $(CFLAGS) $*.cc > $@ clean: rm $(patsubst %, %/*.o, $(MODULES)) rm $(patsubst %, %/*.d, $(MODULES)) rm *.d rm *.o
das module.mk so:
SRC += UI/helloworld.cc LIBS += `pkg-config gtkmm-2.4 --cflags --libs`
und das depend.sh so:
#!/bin/sh #gcc -MM -MG "$@" | #sed -e 's@ˆ\(.*\)\.o:@\1.d \1.o:@' DIR="$1" shift 1 case "$DIR" in "" | ".") gcc -MM -MG "$@" | sed -e 's@ˆ\(.*\)\.o:@\1.d \ \1.o:@' ;; *) gcc -MM -MG "$@" | sed -e "s@ˆ\(.*\)\.o:@$DIR/\ \1.d $DIR/\1.o:@" ;; esac
Das Ganze hab ich aus einer Beschreibung für Make... allerdings, arbeiten die dort mit c und nicht mit c++, was aber glaub ich nicht so einen grossen Unterschied macht.
wenn ich nun make eingebe kommt volgende fehlermeldung:g++ -c -o main.o main.cc
main.cc:1:24: Fehler: gtkmm/main.h: No such file or directorynaja ich hab nirgends im Makefile eine Zeile die auch nur annähernd so aussieht. Woher nimmt make das und wass muss ich machen um diesen Befehl zu verändern?
-
Das hat nichts mit Make zu tun. Du bekommst einen Compilerfehler. Bei deinen CFlags fehlt noch
`pkg-config gtkmm-2.4 --cflags`
-