CC = gcc
CFLAGS = -Wall -Werror -Wextra -std=c11
SRC_DIR = .
BUILD_DIR = ../../build
DATA_LIBS_DIR = ../data_libs
SOURCES = $(SRC_DIR)/main_executable_module.c \
$(DATA_LIBS_DIR)/data_io.c \
$(DATA_LIBS_DIR)/data_stat.c \
$(DATA_LIBS_DIR)/data_process.c \
$(DATA_LIBS_DIR)/decision.c
OBJECTS = $(BUILD_DIR)/main_executable_module.o \
$(BUILD_DIR)/data_io.o \
$(BUILD_DIR)/data_stat.o \
$(BUILD_DIR)/data_process.o \
$(BUILD_DIR)/decision.o
TARGET = $(BUILD_DIR)/Quest_3
TARGET_STATIC = $(BUILD_DIR)/Quest_4
all: $(TARGET)
$(TARGET): $(OBJECTS)
$(CC) $(CFLAGS) -o $@ $^ -lm
# Static library target
data_stat.a: $(BUILD_DIR)/data_stat.o
ar rcs $(BUILD_DIR)/$@ $^
build_with_static: data_stat.a $(BUILD_DIR)/main_executable_module.o $(BUILD_DIR)/data_io.o $(BUILD_DIR)/data_process.o $(BUILD_DIR)/decision.o
$(CC) $(CFLAGS) -o $(TARGET_STATIC) $(BUILD_DIR)/main_executable_module.o $(BUILD_DIR)/data_io.o $(BUILD_DIR)/data_process.o $(BUILD_DIR)/decision.o $(BUILD_DIR)/data_stat.a -lm
$(BUILD_DIR)/%.o: $(DATA_LIBS_DIR)/%.c
mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(BUILD_DIR)/main_executable_module.o: $(SRC_DIR)/main_executable_module.c
mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(BUILD_DIR)/*.o $(BUILD_DIR)/*.a $(TARGET) $(TARGET_STATIC)
rebuild: clean all
.PHONY: all clean rebuild build_with_static