# Variables comunes source := source/*.cpp executable_name := demo_pelotas2 CXX := g++ # Cambiar a clang++ si lo prefieres CXXFLAGS := -std=c++11 -Wall # Opciones comunes de compilación LDFLAGS := -lSDL2 # Opciones comunes de enlace # Detectar plataforma ifeq ($(OS),Windows_NT) PLATFORM := windows LDFLAGS += -lmingw32 -lws2_32 -lSDL2main OUTPUT_EXT := .exe else UNAME_S := $(shell uname -s) ifeq ($(UNAME_S),Linux) PLATFORM := linux OUTPUT_EXT := .out endif ifeq ($(UNAME_S),Darwin) # macOS PLATFORM := macos CXX := clang++ # Usar clang++ en macOS OUTPUT_EXT := .out endif endif # Regla principal: compilar según la plataforma detectada all: $(PLATFORM) # Regla para Windows windows: $(CXX) $(source) $(CXXFLAGS) $(LDFLAGS) -o $(executable_name)$(OUTPUT_EXT) # Regla para Linux linux: $(CXX) $(source) $(CXXFLAGS) $(LDFLAGS) -o $(executable_name)$(OUTPUT_EXT) # Regla para macOS macos: $(CXX) $(source) $(CXXFLAGS) $(LDFLAGS) -o $(executable_name)$(OUTPUT_EXT) # Regla para limpiar los archivos generados clean: rm -f $(executable_name)*