CXX = g++ CXXFLAGS = -std=c++11 -g -ggdb -Wall SRC_DIR = src OBJ_DIR = build # TODO: incorporate imgui into project files and not use gl3w # can also remove -ldl from LDFLAGS then CC = gcc GL3W_CFLAGS = -Wall -I$(IMGUI_DIR)/examples/libs/gl3w CXXFLAGS += -I$(IMGUI_DIR)/examples/libs/gl3w GL3W_LDFLAGS += -ldl # libGLEW needs to be >= 2.0.0 to use opengl core context # don't know a good way to require this in make without forcing a specific version LDFLAGS = -lSDL2 -lGLEW -lGL # SDL2_image CXXFLAGS += $(shell pkg-config --cflags SDL2_image) LDFLAGS += $(shell pkg-config --libs SDL2_image) # IMGUI IMGUI_DIR = ext/imgui CXXFLAGS += -I$(IMGUI_DIR) -I$(IMGUI_DIR)/examples/sdl_opengl3_example -I$(IMGUI_DIR)/examples/libs/gl3w # assimp LDFLAGS += -lassimp SOURCES = $(IMGUI_DIR)/imgui.cpp \ $(IMGUI_DIR)/imgui_demo.cpp \ $(IMGUI_DIR)/imgui_draw.cpp \ $(IMGUI_DIR)/examples/sdl_opengl3_example/imgui_impl_sdl_gl3.cpp \ OBJECTS := $(patsubst %.cpp, $(OBJ_DIR)/%.o, $(notdir $(SOURCES))) all: $(OBJECTS) $(OBJ_DIR)/gl3w.o $(CXX) $(CXXFLAGS) -I/usr/include/SDL2 -Iext/aixlog/include -o $(OBJ_DIR)/hexgame $(SRC_DIR)/hexgame.cpp $(LDFLAGS) $(GL3W_LDFLAGS) $(OBJ_DIR)/* mkdir -p bin mv $(OBJ_DIR)/hexgame bin info: @echo "SOURCES:" @echo $(SOURCES) @echo "OBJECTS:" @echo $(OBJECTS) $(OBJ_DIR)/imgui.o: $(CXX) -c $(CXXFLAGS) $(IMGUI_DIR)/imgui.cpp -o $@ $(OBJ_DIR)/imgui_demo.o: $(CXX) -c $(CXXFLAGS) $(IMGUI_DIR)/imgui_demo.cpp -o $@ $(OBJ_DIR)/imgui_draw.o: $(CXX) -c $(CXXFLAGS) $(IMGUI_DIR)/imgui_draw.cpp -o $@ $(OBJ_DIR)/imgui_impl_sdl_gl3.o: $(CXX) -c $(CXXFLAGS) $(IMGUI_DIR)/examples/sdl_opengl3_example/imgui_impl_sdl_gl3.cpp -o $@ $(OBJ_DIR)/gl3w.o: $(CC) -c $(GL3W_CFLAGS) $(IMGUI_DIR)/examples/libs/gl3w/GL/gl3w.c -o $@ .PHONY: clean clean: rm -f bin/hexgame $(OBJ_DIR)/*