From 4d4631bec53332a666b4727ad5193f553a1396f7 Mon Sep 17 00:00:00 2001 From: taynpg Date: Tue, 24 Dec 2024 16:58:03 +0800 Subject: [PATCH] =?UTF-8?q?fea=EF=BC=9A=E6=B7=BB=E5=8A=A0=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E8=87=AA=E5=AE=9A=E4=B9=89=E4=BD=BF=E7=94=A8boost::fi?= =?UTF-8?q?lesystem=E5=BC=80=E5=85=B3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 3 +- Makefile | 74 +++++++++++++++++++++++++++++++++++++++++++ client/CMakeLists.txt | 1 - client/client.cpp | 8 ++++- client/main.cpp | 8 ++++- net/CMakeLists.txt | 1 - ofen | 2 +- 7 files changed, 91 insertions(+), 6 deletions(-) create mode 100644 Makefile diff --git a/.vscode/settings.json b/.vscode/settings.json index c836560..6710153 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -132,5 +132,6 @@ "random": "cpp", "cinttypes": "cpp", "regex": "cpp" - } + }, + "makefile.configureOnOpen": false } \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f69512c --- /dev/null +++ b/Makefile @@ -0,0 +1,74 @@ +# 编译器和标志 +CXX = g++ +CXXFLAGS = -Wall -std=c++17 -I./ -I./3rd -I./net -I./ofen/include -I./util # 添加 3rd 目录的头文件路径 + +# 目录 +SRCDIR = src +OBJDIR = obj +BINDIR = bin +LIBDIR = lib +THIRDDIR = 3rd + +# 库路径和库文件 +LIB_PATHS = -L$(LIBDIR) -L$(THIRDDIR)/lib # 假设 3rd 下有一些库文件 +LIBS = -lws2_32 -lwsock32 + +# 源文件 +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 +SERVER_BIN = $(BINDIR)/server + +# 生成的目标文件夹 +$(shell mkdir -p $(OBJDIR) $(BINDIR) $(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 $@ $^ $(CXXFLAGS) $(LIB_PATHS) $(LIBS) + +# 生成 server 可执行文件 +$(SERVER_BIN): $(SERVER_OBJ) $(UTIL_LIB) $(NET_LIB) $(OFEN_LIB) + $(CXX) -o $@ $^ $(CXXFLAGS) $(LIB_PATHS) $(LIBS) + +# 编译 .cpp 文件为 .o 文件 +$(OBJDIR)/%.o: %.cpp + $(CXX) -c -o $@ $< $(CXXFLAGS) + +# 清理生成的文件 +clean: + rm -rf $(OBJDIR) $(BINDIR) $(LIBDIR) + +# 只编译可执行文件 +.PHONY: all clean diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index b774a32..fe805a0 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -4,7 +4,6 @@ project(transmc LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) if (MSVC) - add_definitions(-D_WIN32_WINNT=0x0601) add_compile_options(/source-charset:utf-8) endif() diff --git a/client/client.cpp b/client/client.cpp index 0d6c19d..6535b9c 100644 --- a/client/client.cpp +++ b/client/client.cpp @@ -1,12 +1,18 @@ #include "client.h" -#include #include #include #include #include #include +#ifdef USE_BOOST_FILESYSTEM +#include +namespace fs = boost::filesystem; +#else +#include namespace fs = std::filesystem; +#endif + CClient::CClient(const std::shared_ptr& logger) : logger_(logger) { client_ = std::make_shared(io_context_, logger_); diff --git a/client/main.cpp b/client/main.cpp index 9bd006d..4bff7b6 100644 --- a/client/main.cpp +++ b/client/main.cpp @@ -1,12 +1,18 @@ #include "client.h" #include "version.h" #include -#include #include #include using namespace ofen; + +#ifdef USE_BOOST_FILESYSTEM +#include +namespace fs = boost::filesystem; +#else +#include namespace fs = std::filesystem; +#endif struct TransmSet { std::string ip{}; diff --git a/net/CMakeLists.txt b/net/CMakeLists.txt index 9f240de..c654387 100644 --- a/net/CMakeLists.txt +++ b/net/CMakeLists.txt @@ -3,7 +3,6 @@ cmake_minimum_required(VERSION 3.16) project(trans_net LANGUAGES CXX) if (MSVC) - add_definitions(-D_WIN32_WINNT=0x0601) add_compile_options(/source-charset:utf-8) endif() diff --git a/ofen b/ofen index 1e83e39..8b2905d 160000 --- a/ofen +++ b/ofen @@ -1 +1 @@ -Subproject commit 1e83e393eb2ee59d05690a7c39bf807c994560b2 +Subproject commit 8b2905dadc30a1a7351953b7130f83cff39b69b1