# # ***************************** XP make SCRIPT ******************************** # # XP USE, Test On Windows XP SP3 under mingw730_32 with boost1.83 filesystem # boost compile arg: b2.exe link=static runtime-link=shared --with-filesystem --prefix=C:\boost install export PATH := C:\mingw32\bin:$(PATH) BOOST_VER = 1_83 CXX = g++ CXXFLAGSA = -O2 -Wall -DUSE_BOOST_FILESYSTEM -std=c++17 -I./ -I./3rd -I./net -I./ofen/include -I./util -Wa,-mbig-obj CXXFLAGSB = -IC:\boost\include\boost-$(BOOST_VER) -Wno-unused-variable -finput-charset=utf-8 -fexec-charset=gbk # 目录 CURDIR_WINDOWS := $(subst /,\,$(CURDIR)) OBJDIR = $(CURDIR_WINDOWS)\build\obj BINDIR = $(CURDIR_WINDOWS)\build\bin LIBDIR = $(CURDIR_WINDOWS)\build\lib # 库路径和库文件 LIB_PATHS = -L$(LIBDIR) -LC:\boost\lib LIBS = -lws2_32 -lwsock32 -lboost_filesystem-mgw7-mt-x32-$(BOOST_VER) # 源文件 UTIL_SRC = $(wildcard util/*.cpp) NET_SRC = $(wildcard net/*.cpp) OFEN_SRC = $(wildcard ofen/src/*.cpp) CLIENT_SRC = $(wildcard client/*.cpp) SERVER_SRC = $(wildcard server/*.cpp) # 对应的目标文件 UTIL_OBJ = $(UTIL_SRC:%.cpp=$(OBJDIR)/%.o) NET_OBJ = $(NET_SRC:%.cpp=$(OBJDIR)/%.o) OFEN_OBJ = $(OFEN_SRC:%.cpp=$(OBJDIR)/%.o) CLIENT_OBJ = $(CLIENT_SRC:%.cpp=$(OBJDIR)/%.o) SERVER_OBJ = $(SERVER_SRC:%.cpp=$(OBJDIR)/%.o) # 库文件 UTIL_LIB = $(LIBDIR)\libutil.a NET_LIB = $(LIBDIR)\libnet.a OFEN_LIB = $(LIBDIR)\libofen.a # 可执行文件 CLIENT_BIN = $(BINDIR)\client.exe SERVER_BIN = $(BINDIR)\server.exe # 生成的目标文件夹 $(shell if not exist "$(OBJDIR)" md "$(OBJDIR)") $(shell if not exist "$(BINDIR)" md "$(BINDIR)") $(shell if not exist "$(LIBDIR)" md "$(LIBDIR)") # 默认目标:编译所有目标 all: $(CLIENT_BIN) $(SERVER_BIN) # 生成 util 库 $(UTIL_LIB): $(UTIL_OBJ) ar rcs $@ $^ # 生成 net 库 $(NET_LIB): $(NET_OBJ) ar rcs $@ $^ # 生成 ofen 库 $(OFEN_LIB): $(OFEN_OBJ) ar rcs $@ $^ # 生成 client 可执行文件 $(CLIENT_BIN): $(CLIENT_OBJ) $(UTIL_LIB) $(NET_LIB) $(OFEN_LIB) $(CXX) -o $@ $^ $(CXXFLAGSA) $(CXXFLAGSB) $(LIB_PATHS) $(LIBS) # 生成 server 可执行文件 $(SERVER_BIN): $(SERVER_OBJ) $(UTIL_LIB) $(NET_LIB) $(OFEN_LIB) $(CXX) -o $@ $^ $(CXXFLAGSA) $(CXXFLAGSB) $(LIB_PATHS) $(LIBS) # 编译 .cpp 文件为 .o 文件 $(OBJDIR)/%.o: %.cpp @if not exist "$(subst /,\,$(dir $@))" (md "$(subst /,\,$(dir $@))") $(CXX) -c -o $@ $< $(CXXFLAGSA) $(CXXFLAGSB) # 清理生成的文件 clean: rd /S /Q $(CURDIR_WINDOWS)\build # 只编译可执行文件 .PHONY: all clean