This commit is contained in:
Denis Landa 2025-06-08 20:48:42 +02:00
parent 969f6318a9
commit a4f186f61e

View File

@ -1,25 +1,59 @@
CC=gcc
CFLAGS=-Wall -std=c99 -g
LDFLAGS=-lncurses
# Univerzálny Makefile pre ncurses projekt
# Autor: Mišo Chlebovec
# Verzia: 1.1
# Kompilátor
CC = gcc
OBJS = main.o game.o world.o
# Základné flags
CFLAGS = -Wall -std=c99 -g -D_GNU_SOURCE
all: game
# Hľadanie ncurses
NCURSES_CFLAGS = $(shell pkg-config --cflags ncurses 2>/dev/null || \
echo "-I/usr/include -I/usr/include/ncurses -I/usr/local/include -I/usr/local/include/ncurses")
game: $(OBJS)
$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) -o game
NCURSES_LIBS = $(shell pkg-config --libs ncurses 2>/dev/null || echo "-lncurses")
main.o: main.c game.h world.h
$(CC) $(CFLAGS) -c main.c
# Finalne flags
CFLAGS += $(NCURSES_CFLAGS)
LDFLAGS = $(NCURSES_LIBS)
game.o: game.c game.h world.h
$(CC) $(CFLAGS) -c game.c
# Súbory
SRCS = main.c game.c world.c
OBJS = $(SRCS:.c=.o)
TARGET = game
world.o: world.c world.h
$(CC) $(CFLAGS) -c world.c
# Pravidlá
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) -o $(TARGET)
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f *.o game
rm -f $(OBJS) $(TARGET)
distclean: clean
rm -f *~ .*swp
# Pomocné pravidlá
.PHONY: all clean distclean
# Automatická detekcia závislostí
DEPDIR := .deps
DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.d
COMPILE.c = $(CC) $(DEPFLAGS) $(CFLAGS) -c
%.o : %.c $(DEPDIR)/%.d | $(DEPDIR)
$(COMPILE.c) $< -o $@
$(DEPDIR):
@mkdir -p $@
DEPFILES := $(SRCS:%.c=$(DEPDIR)/%.d)
$(DEPFILES):
include $(wildcard $(DEPFILES))