Hallo,
hab folgendes makefile:
1 | TARGET = program
|
2 | #
|
3 | MODULES = . src1 src2
|
4 | INCLUDES = $(foreach MODULE,$(MODULES),-I$(MODULE))
|
5 | |
6 | ###############################################:
|
7 | CFLAGS = -Wall -Os -c -g -dA
|
8 | AFLAGS =
|
9 | LFLAGS = -o $(TARGET).elf
|
10 | |
11 | CC = m32c-elf-gcc
|
12 | AS = m32c-elf-gcc
|
13 | LD = m32c-elf-gcc
|
14 | #######################################
|
15 | ECHO = @-echo
|
16 | |
17 | # folder where the output hexfile is placed
|
18 | OUTDIR = OUTPUT
|
19 | # all temporary files will be generated into TEMPDIR
|
20 | TEMPDIR = TEMP
|
21 | |
22 | CFILES := $(foreach MODULE, $(MODULES), $(wildcard $(MODULE)/*.c))
|
23 | HFILES := $(foreach MODULE, $(MODULES), $(wildcard $(MODULE)/*.h))
|
24 | SFILES := $(foreach MODULE, $(MODULES), $(wildcard $(MODULE)/*.S))
|
25 | |
26 | OBJECTS := $(addprefix $(TEMPDIR)/, $(notdir $(SFILES:.S=.o)))
|
27 | OBJECTS += $(addprefix $(TEMPDIR)/, $(notdir $(CFILES:.c=.o)))
|
28 | |
29 | OBJECTS_NO_PATH := $(notdir $(OBJECTS))
|
30 | |
31 | ###########################################################################
|
32 | |
33 | $(TARGET): $(OBJECTS)
|
34 | @echo Linking $(TARGET).
|
35 | @$(CC) $(CFLAGS) $(OBJECTS) $(LFLAGS)
|
36 | |
37 | $(TEMPDIR)/%.o: %.c
|
38 | @echo -----------------------------------------
|
39 | @echo COMPILING DEPENDENCY FILE FOR $@
|
40 | $(CC) -MM $(INCLUDES) $(CFLAGS) $< > $(TEMPDIR)/$(addsuffix .d, $(notdir $(basename $@)))
|
41 | @echo -----------------------------------------
|
42 | @echo COMPILING OBJECT FILE $@
|
43 | $(CC) -c $(INCLUDES) $(CFLAGS) $< -o $@
|
44 | $(ECHO) ===========================================================================
|
45 | |
46 | $(TEMPDIR)/%.o: %.S
|
47 | $(ECHO) ===========================================================================
|
48 | $(ECHO) ... assembling $@ from $< ...
|
49 | $(AS) $(AFLAGS)
|
50 | |
51 | |
52 | -include $(OBJECTS:.o=.d)
|
53 | |
54 | clean:
|
55 | $(REMOVE) $(TEMPDIR)/*.*
|
56 | $(REMOVE) $(OUTDIR)/*.*
|
57 | |
58 | test:
|
59 | @echo CFILES: $(CFILES)
|
60 | @echo HFILES: $(HFILES)
|
61 | @echo SFILES: $(SFILES)
|
62 | @echo OBJECTS: $(OBJECTS)
|
63 | @echo OBJECTS_NO_PATH: $(OBJECTS_NO_PATH)
|
Wie zu sehen ist, habe ich mehrere Quelldatei-Ordner sowie Qelldateien
im Root-Ordner. Alles temporäre soll nach TEMPDIR (*.d, *.o), das
Hexfile soll im OUTPUT Ordner landen. Bin seit Tagen am
probieren...dieser verdammte SCHEISS.
Sobald ich make eingebe kommt:
1 | make: *** Keine Regel vorhanden, um das Target »TEMP/mod1.o«,
|
2 | benötigt von »program«, zu erstellen. Schluss.
|
Irgendiwe klappt das mit den Verzeichnisse nicht so.
Hat jemand ne Idee?
Gruß Bronko