Makefilefrage: Wie kann jede Quelldatei von Änderungen ihrer header abhängen?
-
Hallo, wie im titel schon gesagt, möchte ich das bei der benutzung meines makesfiles jede quelldatei auch dann neu kompiliert wird, wenn sich einer ihrer #includes ändert.
also z.B.: main.cpp inkludiert header.h . header.h ändert sich ==> main.cpp wird beim nächsten make neukompiliert
Ich hoffe auf eure Hilfe
Gruß FencerSRCDIR := ../src INCDIR := -I$(SRCDIR)/include -I/usr/cross/include BINDIR := /usr/cross/bin CFLAGS := -Wall -Wextra $(INCDIR) -nostdlib -nostdinc -fno-builtin -fno-stack-protector csources :=$(shell find $(SRCDIR) -mindepth 1 -maxdepth 5 -name "*.c") asmsources :=$(shell find $(SRCDIR) -mindepth 1 -maxdepth 5 -name "*.s") cobjects := $(patsubst %.c,%.o,$(csources)) asmobjects:=$(patsubst %.s,%.o,$(asmsources)) depfiles:= $(patsubst %.c,%.d,$(csources)) all: kernel kernel: $(cobjects) $(asmobjects) $(BINDIR)/i586-elf-ld -o kernel -Tlink.ld $(cobjects) $(asmobjects) clean: rm $(cobjects) $(asmobjects) rm kernel %.o: %.c $(BINDIR)/i586-elf-gcc -c $< -o $@ $(CFLAGS) %.o: %.s nasm -felf32 $<edit: wenn nötig bitte verschieben. tschuldigung für den fall.
-
Hier geht es nur um Standard (also ISO) C++ Fragen! Eine Makefile hat damit nichts zu tun.
Ansonsten schau dir die Ultimative Makefile an!
-
trotzdem danke für deine Antwort
-
Alternativ kannst du dir auch einfache Buildsysteme wie SCons anschauen.
Wenn du dann bei der Verteilung des Programmes wegen dessen Verbreitung auf make setzen willst, wären sowieso die autotools angebracht.
-
Einfach die Objekte (*.o) auch von den Header-Dateien abhängig machen. Entweder manuell (soundso.o : dings.h bums.h), oder automatisch (makedepend).
Alternativ kannst Du ein anderes Build-System nutzen, welches solche Abhängigkeiten automatisch erkennt (cmake, Boost.Build, ...)
Gruß,
SP
-
jap die methode aus dem ultimate makefile hat funktioniert.
danke ich werd mir auch scons, autotool,... mal genauer anschauen