Lowlevel

Lowlevel => Softwareentwicklung => Thema gestartet von: MrTom3715 am 04. January 2013, 20:32

Titel: Includedateien & Co in verschiedene Ordner
Beitrag von: MrTom3715 am 04. January 2013, 20:32
Hallo,
ich habe jetzt schon einige Sachen programmiert.
Nun schaue ich meinen Source Ordner an und sehe nichts.
Kann ich mein Makefile ändern das ich z.B. die Includedateien in einen Ordner gebe und die Funktionen in einen anderen?
Muss ich dann auch noch etwas an den Dateien verändern??

Danke schon im Vorraus.

MrTom3715
Titel: Re: Includedateien & Co in verschiedene Ordner
Beitrag von: Martin Erhardt am 04. January 2013, 20:51
In der Makefile kannst du CFLAGS = ... - I deinOrdnermitdenHeaderDateien eingeben.

Du kannst aber in #include auch einen Pfad angeben (zb.#include "../inc")
Titel: Re: Includedateien & Co in verschiedene Ordner
Beitrag von: MrTom3715 am 04. January 2013, 21:02
Danke für deine Antwort.

Ich habe jetzt aber noch nicht verstanden wie ich das ins Makefile schreiben soll.

Ich muss in die Makefile CFLAGS = ... -i Ordnername der Dateien eingeben.

Jetzt meine Frage:
Was muss ich statt den ... schreiben und wohin in das Makefile.

Mein Makefile sieht im Moment so aus:
SRCS = $(shell find -name '*.[cS]')
OBJS = $(addsuffix .o,$(basename $(SRCS)))

CC = gcc
LD = ld

ASFLAGS = -m32
CFLAGS = -m32 -Wall -g -fno-stack-protector -nostdinc
LDFLAGS = -melf_i386 -Tkernel.ld

kernel: $(OBJS)
$(LD) $(LDFLAGS) -o $@ $^

%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $^

%.o: %.S
$(CC) $(ASFLAGS) -c -o $@ $^

clean:
rm $(OBJS)

.PHONY: clean

MrTom3715
Titel: Re: Includedateien & Co in verschiedene Ordner
Beitrag von: Martin Erhardt am 04. January 2013, 21:10
HIER:
SRCS = $(shell find -name '*.[cS]')
OBJS = $(addsuffix .o,$(basename $(SRCS)))

CC = gcc
LD = ld

ASFLAGS = -m32
CFLAGS = -m32 -Wall -Werror -g -fno-stack-protector -nostdinc -I Ordnername
LDFLAGS = -melf_i386 -Tkernel.ld

kernel: $(OBJS)
$(LD) $(LDFLAGS) -o $@ $^

%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $^

%.o: %.S
$(CC) $(ASFLAGS) -c -o $@ $^

clean:
rm $(OBJS)

.PHONY: clean
Tipp: Lese mal ein C Buch oder längeres Tutorial.
Titel: Re: Includedateien & Co in verschiedene Ordner
Beitrag von: MrTom3715 am 04. January 2013, 21:13
Dankeschön funktioniert.

Wenn ich aber mehrere Ordner erstelle, schreibe ich dann in der nächsten Zeile einfach noch einmal das gleiche mit dem anderen Ordnernamen.


MrTom3715
Titel: Re: Includedateien & Co in verschiedene Ordner
Beitrag von: Martin Erhardt am 04. January 2013, 21:14
Du musst nicht die ganze Zeile neuschreiben:
SRCS = $(shell find -name '*.[cS]')
OBJS = $(addsuffix .o,$(basename $(SRCS)))

CC = gcc
LD = ld

ASFLAGS = -m32
CFLAGS = -m32 -Wall -Werror -g -fno-stack-protector -nostdinc -I Ordnername -I Ordnername2
LDFLAGS = -melf_i386 -Tkernel.ld

kernel: $(OBJS)
$(LD) $(LDFLAGS) -o $@ $^

%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $^

%.o: %.S
$(CC) $(ASFLAGS) -c -o $@ $^

clean:
rm $(OBJS)

.PHONY: clean