# Compiler CC = gcc # Build mode BUILD_MODE ?= RELEASE INCLUDE_DIRS := $(shell find src -type d) ifeq ($(BUILD_MODE),DEBUG) CFLAGS = -Wall -Wextra -std=c11 $(addprefix -I,$(INCLUDE_DIRS)) -g -O0 else CFLAGS = -Wall -Wextra -std=c11 $(addprefix -I,$(INCLUDE_DIRS)) -O2 endif # Linker flags LDFLAGS = -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 # Carpeta de build BUILD_DIR = build # Target final TARGET = $(BUILD_DIR)/pns # Fuentes y objetos SRC = $(shell find src -name "*.c") OBJ = $(patsubst src/%.c,$(BUILD_DIR)/%.o,$(SRC)) # Phony targets .PHONY: all clean # Target por defecto all: $(TARGET) # Linking $(TARGET): $(OBJ) $(CC) $(OBJ) -o $@ $(LDFLAGS) # Compilación de objetos # mkdir -p crea la carpeta automáticamente si no existe $(BUILD_DIR)/%.o: src/%.c mkdir -p $(dir $@) $(CC) $(CFLAGS) -c $< -o $@ # Limpiar todo clean: rm -rf $(BUILD_DIR)