49 lines
827 B
Makefile
Executable File
49 lines
827 B
Makefile
Executable File
#
|
|
# Snel makefile
|
|
#
|
|
# Author: Christos Choutouridis AEM:8997
|
|
# email: cchoutou@ece.auth.gr
|
|
#
|
|
|
|
CXX := -c++
|
|
CXXFLAGS := -std=c++14 -Wall -Wextra -Werror
|
|
LDFLAGS := -lstdc++
|
|
BUILD := ./bin
|
|
OBJ_DIR := $(BUILD)/obj
|
|
APP_DIR := $(BUILD)
|
|
TARGET := snel
|
|
SRC := $(wildcard src/*.cpp)
|
|
|
|
OBJECTS := $(SRC:%.cpp=$(OBJ_DIR)/%.o)
|
|
|
|
$(OBJ_DIR)/%.o: %.cpp
|
|
@mkdir -p $(@D)
|
|
$(CXX) $(CXXFLAGS) -o $@ -c $<
|
|
|
|
$(APP_DIR)/$(TARGET): $(OBJECTS)
|
|
@mkdir -p $(@D)
|
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $(APP_DIR)/$(TARGET) $(OBJECTS)
|
|
|
|
# === Rules ===
|
|
snel: build $(APP_DIR)/$(TARGET)
|
|
|
|
build:
|
|
@mkdir -p $(APP_DIR)
|
|
@mkdir -p $(OBJ_DIR)
|
|
|
|
debug: CXXFLAGS += -DDEBUG -g3
|
|
debug: snel
|
|
|
|
release: CXXFLAGS += -O2
|
|
release: snel
|
|
|
|
all: release
|
|
|
|
clean:
|
|
-@rm -rvf $(OBJ_DIR)/*
|
|
-@rm -rvf $(APP_DIR)/*
|
|
|
|
.PHONY: snel build debug release all clean
|
|
|
|
|