Just det det där enkla sättet fungerar utan att skriva en Makefile.
make Hellow
då det finns en fil Hellow.c med en main funktion i.
du måste dock installera make först...
Utan att anstränga mig hittade jag denna sida om gnu make.
http://theory.uwinnipeg.ca/gnu/make/make_toc.html
Ett exempel:
Kod: Markera allt
SRC_C=test.c main.c
DEBUG=
CFLAGS=-Wall $(DEBUG)
CC=gcc
SRC_O = $(SRC_C:.c=.o)
test: $(SRC_O)
$(CC) $(CFLAGS) $^ -o $@
%.o : %.c
$(CC) -c $(CFLAGS) $< -o $@
Först kommer deklarationer av variabler
test.c och main.c är dina filer som du ska kompilera till programmet test
SRC_O = $(SRC_C:.c=.o) Alla förekomster av .c i SRC_C byts ut mot .o. SRC_O kommer alltså innehålla test.o och main.o
Det första målet (i fortsättningen kallar jag det för target) är test. Då tittar make på höger sida om :
Om det på högersidan inte finns kollar make vidare för att se om det finns regler för att bygga det.
Det finns det
%.o : %.c
Detta target innebär att .o filen byggs från en .c fil med samma namn.
$(CC) -c $(CFLAGS) $< -o $@
Variablerna byts ut; $< betyder första värdet till höger om : och $@ det till vänster.
-c står för att filen enbart ska kompileras, ingen länkning.
OBS! Det ska vara en tab innan kommandot ($(CC) -c $(CFLAGS) $< -o $@)
När nu både main.o och test.o finns kan make gå tillbaka och bygga test
$(CC) $(CFLAGS) $^ -o $@
$^ betyder alla argument till höger om :