CC = gcc CFLAGS = -I./include -Wall -Wextra -MMD -MP LDLIBS = -lncurses SRC_DIR = src BUILD_DIR = build SOURCES = $(filter-out $(SRC_DIR)/testLogic.c, $(wildcard $(SRC_DIR)/*.c)) OBJECTS = $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SOURCES)) TEST_SOURCES = $(SRC_DIR)/logic.c $(SRC_DIR)/testLogic.c TEST_OBJECTS = $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(TEST_SOURCES)) EXEC = productManager EXECTEST = test DEPS = $(OBJECTS:.o=.d) all: $(EXEC) $(EXEC): $(OBJECTS) $(CC) $^ -o $@ $(LDLIBS) $(BUILD_DIR)/%.o: $(SRC_DIR)/%.c @mkdir -p $(@D) $(CC) $(CFLAGS) -c $< -o $@ -include $(DEPS) test: $(TEST_OBJECTS) $(CC) $^ -o $(EXECTEST) $(LDLIBS) clean: rm -rf $(BUILD_DIR) $(EXEC) $(EXECTEST) .PHONY: all clean