diff --git a/CMakeLists.txt b/CMakeLists.txt index c030047..0dfb974 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,7 @@ set(CMAKE_CXX_STANDARD 26) find_package(ftxui CONFIG REQUIRED) find_package(nlohmann_json REQUIRED) find_package(asio REQUIRED) +find_package(argparse REQUIRED) # 移除 /utf-8 选项 if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC") @@ -50,5 +51,8 @@ target_link_libraries(uno-client add_executable(uno-server src/server/main.cpp) target_link_libraries(uno-server PRIVATE uno-game-lib) +target_link_libraries(uno-server + PRIVATE argparse::argparse +) add_subdirectory(test) \ No newline at end of file diff --git a/src/server/main.cpp b/src/server/main.cpp index 795ea04..dc10f46 100644 --- a/src/server/main.cpp +++ b/src/server/main.cpp @@ -4,11 +4,32 @@ * @author Yuzhe Guo * @date 2025.12.01 */ +#include #include "UnoServer.h" -int main() +int main(int argc, char *argv[]) { - UNO::SERVER::UnoServer uno_server; - uno_server.run(); + argparse::ArgumentParser parser("Uno Server", "0.1.0"); + + parser.add_argument("-p", "--port").help("server port").default_value(static_cast(10001)).scan<'i', uint16_t>(); + + try { + parser.parse_args(argc, argv); + } + catch (const std::exception &e) { + std::cerr << e.what() << std::endl; + std::cerr << parser; + return 1; + } + + try { + UNO::SERVER::UnoServer uno_server(parser.get("--port")); + uno_server.run(); + } + catch (const std::exception &e) { + std::cerr << e.what() << std::endl; + return 1; + } + return 0; } \ No newline at end of file