INC = -I./include # 头文件搜索路径
CFLAGS = -Wall -Wextra -Wpedantic -Werror -std=c++17 $(INC) # 编译选项

# 全部源文件列表
SRC = main.cpp $(wildcard lib/*.cpp)
# 全部目标文件列表，由SRC列表中的源文件名替换为.o后缀得到
OBS = $(SRC:.cpp=.o)

# 默认目标，make命令将以构建此文件作为终极目标
all: poetry

# poetry可执行程序依赖所有目标文件，构建命令为使用g++链接所有目标文件
poetry: $(OBS)
	g++ -o $@ $^

# 目标文件依赖其对应的源文件，构建命令为使用g++编译源文件
%.o: %.cpp
	g++ $(CFLAGS) -c -o $@ $<

# 伪目标，清除所有目标文件
clean:
	rm -rf $(OBS) poetry
