Makefile für gesamten Ordner

Gast #2410405
Lesenswert?

Hi Leute,
ich habe in meinem Ordner mehrere *.c Files welche auch alle eine 
eigenständige executable ergeben. Nun wollte ich das ganze auf "make" 
umstellen.
Für ein makefile funktioniert das auch bestens, nun möchte ich aber mit 
einem make, alle neuen *.c neu compilieren (und wie gesagt, in 
unterschiedliche ausführbare Dateien.)
Geht das, ohne dass ich source1, source2, ... eingeben muss?
1
TARGET   = source1
2

3
SRC      = source1.c
4

5
HEADER   =
6

7
OBJ      = $(SRC:%.c=%.o)
8

9
CFLAGS   = -Wall
10

11
LNKFALGS =
12

13
CC =     gcc
14
RM =     rm -f
15

16
%.o: %.c $(HEADER)
17
  $(CC) $(CFALGS) -c $< -o $@
18

19
$(TARGET): $(OBJ)
20
  $(CC) $(LNKFLAGS) $(OBJ) -o $(TARGET)
21

22
all: $(TARGET)
23

24
clean:
25
  $(RM) $(OBJ)
26

27
# $(TARGET)  #Remove executable
#2410644
Lesenswert?

GNU-make?
Da geht es z.B. so:
1
# alle *.c finden:
2
SRC=$(wildcard *.c)
3

4
# alle OBJ
5
OBJ=$(SRC:%.c=%.o)
6

7
# alle Programme
8
TARGETS=$(SRC:%.c=%)
9

10
# implizite Regel, um aus eine *.c zu kompilieren:
11
.c.o:
12
  gcc -Wall -c $< -o $@
13

14
# implizite Regel, um aus einer .obj ein Programm zu machen:
15
.o:
16
  gcc -Wall $< -o $@
17

18
# alles bauen:
19
all: $(TARGETS)
20

21
# testweise ausgeben:
22
default:
23
  @echo alle src sind $(SRC)
24
  @echo alle obj sind $(OBJ)
25
  @echo alle exe sind $(TARGETS)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren