Makefile Template

From Wiki
Jump to navigationJump to search

Remember that the leading spaces need to be converted to tabs when cutting and pasting!

TARGET = prog
LIBS = -lm
CC = gcc
CFLAGS = -g -Wall

.PHONY: default all clean

default: $(TARGET)
all: default

OBJECTS = $(patsubst %.c, %.o, $(wildcard *.c))
HEADERS = $(wildcard *.h)

%.o: %.c $(HEADERS)
  $(CC) $(CFLAGS) -c $< -o $@

.PRECIOUS: $(TARGET) $(OBJECTS)

$(TARGET): $(OBJECTS)
  $(CC) $(OBJECTS) -Wall $(LIBS) -o $@

clean:
  -rm -f *.o
  -rm -f $(TARGET)