Autor Thema: Includedateien & Co in verschiedene Ordner  (Gelesen 7655 mal)

MrTom3715

  • Beiträge: 38
    • Profil anzeigen
Gespeichert
« 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

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« Antwort #1 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")

MrTom3715

  • Beiträge: 38
    • Profil anzeigen
Gespeichert
« Antwort #2 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

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« Antwort #3 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.
« Letzte Änderung: 04. January 2013, 21:12 von Martin Erhardt »

MrTom3715

  • Beiträge: 38
    • Profil anzeigen
Gespeichert
« Antwort #4 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

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« Antwort #5 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

 

Einloggen