Makefile (691B)
1 TARGET = spreadsheets 2 #INSTALL_PATH = /usr/local/bin 3 4 SRC_DIR = src 5 OBJ_DIR = obj 6 BIN_DIR = bin 7 8 SRC = $(wildcard $(SRC_DIR)/*.cpp) 9 OBJ = $(SRC:$(SRC_DIR)/%.cpp=$(OBJ_DIR)/%.o) 10 11 MOVE = mv 12 MKDIR_P = mkdir -p 13 14 CC = g++ 15 CPPFLAGS += -Iinclude -pedantic 16 CFLAGS += -Wall -std=c++17 -O3 17 LDFLAGS += -Llib 18 #LDLIBS += -lm 19 20 .PHONY: all clean 21 22 all: $(TARGET) 23 24 $(TARGET): $(OBJ) 25 $(MKDIR_P) $(BIN_DIR) 26 $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ 27 $(MOVE) $(TARGET) $(BIN_DIR) 28 29 $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp 30 $(MKDIR_P) $(OBJ_DIR) 31 $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ 32 33 run: 34 ./$(BIN_DIR)/$(TARGET) 35 36 install: $(TARGET) 37 cp $(BIN_DIR)/$(TARGET) $(INSTALL_PATH) 38 39 clean: 40 $(RM) $(OBJ) $(BIN_DIR)/$(TARGET)