60 lines
1.3 KiB
Makefile
60 lines
1.3 KiB
Makefile
# Makefile for ImGui SDL2 + OpenGL3 project
|
|
|
|
CXX = g++
|
|
CXXFLAGS = -std=c++26 -Wall -g
|
|
#CXXFLAGS = -std=c++26 -Wall -g -Werror
|
|
|
|
INCLUDE_SOURCES = \
|
|
include/imgui/imgui.cpp \
|
|
include/imgui/imgui_draw.cpp \
|
|
include/imgui/imgui_tables.cpp \
|
|
include/imgui/imgui_widgets.cpp \
|
|
include/imgui/imgui_demo.cpp \
|
|
include/imgui/backends/imgui_impl_sdl2.cpp \
|
|
include/imgui/backends/imgui_impl_opengl3.cpp \
|
|
include/imnodes/imnodes.cpp \
|
|
include/implot/implot.cpp \
|
|
include/implot/implot_items.cpp \
|
|
|
|
|
|
INCLUDES = -Iinclude -Iinclude/imgui -Iinclude/imnodes -Iinclude/implot
|
|
|
|
# SDL2 and OpenGL flags
|
|
UNAME_S := $(shell uname -s)
|
|
SDL_CFLAGS := $(shell sdl2-config --cflags)
|
|
SDL_LIBS := $(shell sdl2-config --libs)
|
|
GL_LIBS = -lGL
|
|
LIBS = $(SDL_LIBS) $(GL_LIBS) -ldl
|
|
CXXFLAGS += $(SDL_CFLAGS) $(INCLUDES)
|
|
|
|
# Targets and source files
|
|
EXE = app
|
|
SOURCES := $(shell find src -name '*.cpp') $(IMGUI_SOURCES) $(INCLUDE_SOURCES)
|
|
|
|
|
|
# Convert source files to object files (e.g. imgui/imgui.cpp -> imgui/imgui.o)
|
|
OBJECTS = $(SOURCES:.cpp=.o)
|
|
|
|
.PHONY: all build run clean
|
|
|
|
all: build
|
|
|
|
build: $(EXE)
|
|
|
|
$(EXE): $(OBJECTS)
|
|
$(CXX) -o $@ $^ $(LIBS)
|
|
|
|
# Ensure object files are built from correct paths
|
|
%.o: %.cpp
|
|
$(CXX) $(CXXFLAGS) -c -o $@ $<
|
|
|
|
run: build
|
|
./$(EXE)
|
|
|
|
debug: build
|
|
gdb ./$(EXE)
|
|
|
|
clean:
|
|
rm -f $(OBJECTS) $(EXE)
|
|
|