För att ta ett exempel, så har jag lyckats få till följande fullt fungerande (än så länge) make-fil som är tänkt att kompilera ett litet program jag kallar för SoundMan:
Kod: Markera allt
IDIR =../Inc
CC=gcc
CFLAGS=-I$(IDIR)
ODIR=Obj
LDIR =../Lib
LIBS=-lm
_DEPS = Trim.h
DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))
_OBJ = SoundMan.o Trim.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
$(ODIR)/%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS) `pkg-config --cflags sndfile`
SoundMan: $(OBJ)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) `pkg-config --libs sndfile`
.PHONY: clean
clean:
rm -f $(ODIR)/*.o *~ core $(IDIR)/*~
Har märkt att en make-fil inte verkar fungera som ett skalskript, så vissa saker man är van att göra med skalskript verkar alltså inte gå att göra i en make-fil. Ett exempel är då tilldelningen av variabler, exempelvis:
Kod: Markera allt
LIBS=-lm
Kod: Markera allt
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) `pkg-config --libs sndfile`
Kod: Markera allt
$ `pkg-config --libs sndfile`
-lsndfile
Kod: Markera allt
-lm -lsndfile
Kod: Markera allt
LIBS="-lm -lsndfile"
Kod: Markera allt
LIB1=-lm
LIB2=-lsndfile
Någon som har ett bättre förslag?
Har sökt som en gredelin liten tant (vilket ju är anmärkningsvärd med tanke på att varken kön eller färg stämmer…), men bara funnit hur man inkluderar flera bibliotek när man kompilerar manuellt med exempelvis gcc, inte i en make-fil vid användande av variabler.