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