# 编译器和编译选项 CXX = g++ CXXFLAGS = -Wall -Wextra -std=c++17 -O2 -Wno-unused-parameter # 文件和目标 LIB_SRC = filecomplete.cpp LIB_OBJ = $(LIB_SRC:.cpp=.o) LIB_HEADER = filecomplete.h MAIN_SRC = main.cpp MAIN_OBJ = $(MAIN_SRC:.cpp=.o) TARGET = main KEY_VALUE_SRC = key_value.cxx KEY_VALUE_BIN = key_value # 默认目标 all: $(TARGET) $(KEY_VALUE_BIN) # 生成目标文件 $(TARGET): $(LIB_OBJ) $(MAIN_OBJ) $(CXX) $(CXXFLAGS) -o $@ $^ # 编译库源文件 $(LIB_OBJ): $(LIB_SRC) $(LIB_HEADER) $(CXX) $(CXXFLAGS) -c $< -o $@ # 编译主程序文件 $(MAIN_OBJ): $(MAIN_SRC) $(CXX) $(CXXFLAGS) -c $< -o $@ # 编译 key_value 二进制 $(KEY_VALUE_BIN): $(KEY_VALUE_SRC) $(CXX) $(CXXFLAGS) -o $@ $< # 清理生成文件 clean: rm -f $(LIB_OBJ) $(MAIN_OBJ) $(TARGET) $(KEY_VALUE_BIN) # 伪目标 .PHONY: all clean