Files
Makefile-tutorial/Makefile1
Hizenberg469 fd1b1511c8 New Makefile
2024-11-30 15:40:14 +05:30

58 lines
1.5 KiB
Plaintext

SOLUTION_BINARY = solution
BRUTEFORCE_BINARY = $(notdir Stress_Testing/bruteForce)
GENERATOR_BINARY = $(notdir Stress_Testing/generator)
CODEDIRS = . ./Stress_Testing
INCDIRS = .
BUILD_DIR = build
OBJS_DIR = $(BUILD_DIR)/objs
CXX = g++
DEPFLAGS = -MP -MMD
CXXFLAGS = -Wall -Wextra -g \
$(foreach D,$(INCDIRS), -I$(D)) \
$(DEPFLAGS)
CXXFILES = $(foreach D, \
$(CODEDIRS), \
$(wildcard $(D)/*.cpp))
OBJECTS = $(patsubst %.cpp, $(OBJS_DIR)/%.o, $(notdir $(CXXFILES)))
DEPFILES = $(patsubst %.cpp, $(OBJS_DIR)/%.d, $(notdir $(CXXFILES)))
all: $(BUILD_DIR)/$(SOLUTION_BINARY) \
$(BUILD_DIR)/$(GENERATOR_BINARY) \
$(BUILD_DIR)/$(BRUTEFORCE_BINARY)
$(BUILD_DIR)/$(SOLUTION_BINARY): $(OBJS_DIR)/$(SOLUTION_BINARY).o
$(CXX) -o $@ $<
$(BUILD_DIR)/$(GENERATOR_BINARY): $(OBJS_DIR)/$(GENERATOR_BINARY).o
$(CXX) -o $@ $<
$(BUILD_DIR)/$(BRUTEFORCE_BINARY): $(OBJS_DIR)/$(BRUTEFORCE_BINARY).o
$(CXX) -o $@ $<
$(OBJS_DIR)/%.o: %.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
$(OBJS_DIR)/%.o: Stress_Testing/%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
clean:
rm -rf $(BUILD_DIR)/$(SOLUTION_BINARY) \
$(BUILD_DIR)/$(BRUTEFORCE_BINARY) \
$(BUILD_DIR)/$(GENERATOR_BINARY) \
$(OBJECTS) \
$(DEPFILES)
help:
@echo "make clean: To remove executable, objects and dependency files."
@echo "make $(SOLUTION_BINARY): To build $(SOLUTION_BINARY) only."
@echo "make all: To build for Stress_Testing."
-include $(DEPFILES)
.PHONY: clean help all