.PHONY: all build-gui build-game run CXX = g++ LDFLAGS = -L./external/raylib/lib \ -L./external/box2d/build/src \ -L./external/asset_packer/bin \ LIBS = -lraylib -lwinmm -lgdi32 -lbox2d -lassetpacker CXXFLAGS = -std=c++20 -O2 \ -MMD -MP DEBUGFLAGS = -std=c++20 -g -Og INCLUDES = -I./external/raylib/include \ -I./external/entt/single_include \ -I./src/include \ -I./external/imgui \ -I./external/rlImGui \ -I./external/box2d/include \ -I./external/nhlohmann_json_3.12.0/ \ -I./external/asset_packer/bin/include \ IMGUI_SRCS = ./external/imgui/imgui.cpp \ ./external/imgui/imgui_demo.cpp \ ./external/imgui/imgui_draw.cpp \ ./external/imgui/imgui_tables.cpp \ ./external/imgui/imgui_widgets.cpp \ IMGUI_BACKEND = ./external/rlImGui/rlImGui.cpp SRC_FILES = ./src/main.cpp \ ./src/asset.cpp \ ./src/movement.cpp \ ./src/player.cpp \ ./src/render.cpp \ ./src/scenes/scene.cpp \ ./src/scenes/game_play_scene.cpp \ ./src/scenes/menu_scene.cpp IMGUI_OBJS = $(patsubst ./external/imgui/%.cpp,./bin/%.o,$(IMGUI_SRCS)) IMGUI_BACKEND_OBJS = $(patsubst ./external/rlImGui/%.cpp,./bin/%.o,$(IMGUI_BACKEND)) OBJS_FILES = $(patsubst ./src/%.cpp,./bin/%.o,$(SRC_FILES)) DEP_FILES = $(patsubst ./bin/%.o,./bin/%.d,$(OBJS_FILES)) all: build-game run ./bin/%.o: ./external/imgui/%.cpp @mkdir -p bin $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@ ./bin/%.o: ./external/rlImGui/%.cpp @mkdir -p bin $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@ ./bin/%.o: ./src/%.cpp @mkdir -p bin @mkdir -p $(dir $@) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@ compile_commands.json: clean @echo "Generating compile_commands.json..." bear -- $(MAKE) -include $(DEP_FILES) build-gui: $(IMGUI_OBJS) build-gui-backend: $(IMGUI_BACKEND_OBJS) build-core: $(OBJS_FILES) build-game: $(OBJS_FILES) $(IMGUI_OBJS) $(IMGUI_BACKEND_OBJS) @mkdir -p bin $(CXX) $(CXXFLAGS) $(OBJS_FILES) $(IMGUI_OBJS) $(IMGUI_BACKEND_OBJS) $(LDFLAGS) $(LIBS) -o ./bin/main.exe cp ./assets ./bin -rf build-debug: @mkdir -p debug $(CXX) $(DEBUGFLAGS) $(INCLUDES) $(SRC_FILES) $(IMGUI_SRCS) $(IMGUI_BACKEND) $(LDFLAGS) $(LIBS) -o ./debug/d.exe cp ./assets ./debug -rf clean: @rm -r -f ./bin @rm -f compile_commands.json clean-debug: @rm -r -f ./debug clean-all: clean clean-debug run: ./bin/main.exe run-debug: ./debug/d.exe