CC := /usr/bin/g++ INCLUDE_DIR := -I./include -I./third_party/vma/include LFLAGS := -lglfw -lvulkan CFLAGS := -g -Wall -Werror -std=c++20 $(INCLUDE_DIR) $(LFLAGS) SRC_DIR := src BUILD_DIR := ./build TARGET := RedScarfEngine SOURCES := main.cpp \ vulkanBase.cpp \ window.cpp \ logger.cpp \ OBJECTS := $(SOURCES:%=$(BUILD_DIR)/%) OBJECTS := $(OBJECTS:cpp=o) SHADERS_DIR := ./shaders SHADER_OBJECTS := vertex.spv \ fragments.spv \ all: prepare_dirs $(OBJECTS) $(SHADER_OBJECTS) $(CC) $(CFLAGS) -o $(BUILD_DIR)/$(TARGET) $(OBJECTS) # Build shader files vertex.spv: $(SHADERS_DIR)/shader.vert glslc $^ -o $(BUILD_DIR)/$@ fragments.spv: $(SHADERS_DIR)/shader.frag glslc $^ -o $(BUILD_DIR)/$@ $(BUILD_DIR)/%.spv: echo $(basename $^) glslc $^ -o $@ # Generic build command $(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp $(CC) $(CFLAGS) -c $^ -o $@ .PHONY: prepare_dirs prepare_dirs: mkdir -p ./build .PHONY: clean clean: rm -rf ./build