fix:修正mingw编译异常,优化客户端命令行解析部分
This commit is contained in:
parent
cc9aadd68a
commit
e897fe08bb
5
.vscode/settings.json
vendored
5
.vscode/settings.json
vendored
@ -20,7 +20,7 @@
|
|||||||
],
|
],
|
||||||
"visualizerFile": "${workspaceRoot}/.vscode/qt5.natvis",
|
"visualizerFile": "${workspaceRoot}/.vscode/qt5.natvis",
|
||||||
"args": [
|
"args": [
|
||||||
"-a", "106.14.150.219:9898"
|
"-h"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"cmake.environment": {
|
"cmake.environment": {
|
||||||
@ -141,6 +141,7 @@
|
|||||||
"expected": "cpp",
|
"expected": "cpp",
|
||||||
"numbers": "cpp",
|
"numbers": "cpp",
|
||||||
"semaphore": "cpp",
|
"semaphore": "cpp",
|
||||||
"span": "cpp"
|
"span": "cpp",
|
||||||
|
"text_encoding": "cpp"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -12,6 +12,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_SYSTEM_NAME MATCHES "Windows")
|
|||||||
MESSAGE(STATUS "Add MinGW Param.")
|
MESSAGE(STATUS "Add MinGW Param.")
|
||||||
add_compile_options(-finput-charset=utf-8)
|
add_compile_options(-finput-charset=utf-8)
|
||||||
add_compile_options(-fexec-charset=gbk)
|
add_compile_options(-fexec-charset=gbk)
|
||||||
|
add_compile_options(-Wa,-mbig-obj)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CMAKE_DEBUG_POSTFIX "d")
|
set(CMAKE_DEBUG_POSTFIX "d")
|
||||||
|
@ -88,6 +88,7 @@ class CFileOpr
|
|||||||
public:
|
public:
|
||||||
CFileOpr();
|
CFileOpr();
|
||||||
~CFileOpr();
|
~CFileOpr();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static std::vector<std::string> get_file_list(const std::string& input);
|
static std::vector<std::string> get_file_list(const std::string& input);
|
||||||
};
|
};
|
@ -17,6 +17,7 @@ struct CmdParam {
|
|||||||
std::string appendValue;
|
std::string appendValue;
|
||||||
bool showValue{false};
|
bool showValue{false};
|
||||||
long use_config{-1};
|
long use_config{-1};
|
||||||
|
bool parsed{false};
|
||||||
};
|
};
|
||||||
|
|
||||||
class CServerConfig
|
class CServerConfig
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
std::shared_ptr<spdlog::logger> g_Logger = nullptr;
|
std::shared_ptr<spdlog::logger> g_Logger = nullptr;
|
||||||
std::shared_ptr<CServerConfig> g_Config = nullptr;
|
std::shared_ptr<CServerConfig> g_Config = nullptr;
|
||||||
|
|
||||||
bool parse_cmd(int argc, char** argv, CmdParam& param)
|
int parse_cmd(int argc, char** argv, CmdParam& param)
|
||||||
{
|
{
|
||||||
std::string intro("transmc cmd introduce.");
|
std::string intro("transmc cmd introduce.");
|
||||||
CLI::App app(intro);
|
CLI::App app(intro);
|
||||||
@ -17,14 +17,20 @@ bool parse_cmd(int argc, char** argv, CmdParam& param)
|
|||||||
app.add_option("-a, --append", param.appendValue, "添加服务器地址组(地址格式:127.0.0.1:9898)");
|
app.add_option("-a, --append", param.appendValue, "添加服务器地址组(地址格式:127.0.0.1:9898)");
|
||||||
app.add_flag("-s, --show", param.showValue, "查看服务器地址组");
|
app.add_flag("-s, --show", param.showValue, "查看服务器地址组");
|
||||||
app.add_option("-r, --remove", param.removeValue, "移除服务器地址组(值为使用--show中显示的序号)");
|
app.add_option("-r, --remove", param.removeValue, "移除服务器地址组(值为使用--show中显示的序号)");
|
||||||
|
|
||||||
|
if (argc == 1) {
|
||||||
|
std::cout << app.help() << std::endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// 这里的 CLI11_PARSE 在程序没有输入或者仅输入--help(-h)时,会直接返回,后面代码都不会执行。
|
||||||
|
// 当有自定义的参数被输入时,后面代码会执行。
|
||||||
try {
|
try {
|
||||||
CLI11_PARSE(app, argc, argv);
|
CLI11_PARSE(app, argc, argv);
|
||||||
return true;
|
|
||||||
} catch (const CLI::ParseError& e) {
|
} catch (const CLI::ParseError& e) {
|
||||||
std::cerr << "Error parsing command line: " << e.what() << std::endl;
|
return app.exit(e);
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
return false;
|
param.parsed = true;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool exec_cmd(const CmdParam& param, bool& run)
|
bool exec_cmd(const CmdParam& param, bool& run)
|
||||||
@ -49,7 +55,6 @@ bool exec_cmd(const CmdParam& param, bool& run)
|
|||||||
g_Logger->error("append and remove can't simultaneous operate!");
|
g_Logger->error("append and remove can't simultaneous operate!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// 如果是移除
|
|
||||||
if (!param.appendValue.empty()) {
|
if (!param.appendValue.empty()) {
|
||||||
std::regex rg(R"(([^:]+):(\d+))");
|
std::regex rg(R"(([^:]+):(\d+))");
|
||||||
std::smatch match;
|
std::smatch match;
|
||||||
@ -68,10 +73,10 @@ bool exec_cmd(const CmdParam& param, bool& run)
|
|||||||
}
|
}
|
||||||
if (!param.removeValue.empty()) {
|
if (!param.removeValue.empty()) {
|
||||||
if (!g_Config->remove_ini(std::stol(param.removeValue))) {
|
if (!g_Config->remove_ini(std::stol(param.removeValue))) {
|
||||||
g_Logger->error("remove {} failed, please check!", param.removeValue);
|
g_Logger->error("remove config num=[{}] failed, please check!", param.removeValue);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
g_Logger->info("remove {} success!", param.removeValue);
|
g_Logger->info("remove config num=[{}] success!", param.removeValue);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
g_Logger->error("not matched!", param.removeValue);
|
g_Logger->error("not matched!", param.removeValue);
|
||||||
@ -89,36 +94,29 @@ int main(int argc, char* argv[])
|
|||||||
|
|
||||||
bool run = false;
|
bool run = false;
|
||||||
CmdParam param;
|
CmdParam param;
|
||||||
if (!parse_cmd(argc, argv, param)) {
|
parse_cmd(argc, argv, param);
|
||||||
g_Logger->error("parse cmd failed!");
|
if (!param.parsed) {
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (param.appendValue.empty() && param.removeValue.empty() && param.showValue == false &&
|
|
||||||
param.use_config == -1) {
|
|
||||||
g_Logger->warn("Use --help To Get How To Use.");
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!exec_cmd(param, run)) {
|
if (!exec_cmd(param, run)) {
|
||||||
g_Logger->error("exec_cmd failed!");
|
g_Logger->error("exec_cmd failed!");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!run) {
|
if (!run) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_Logger->info("Configure At {} under {} on {}", VERSION_BUILD_DATE, VERSION_GIT_HASH,
|
|
||||||
VERSION_GIT_BRANCH);
|
|
||||||
std::vector<TransmSet> set;
|
std::vector<TransmSet> set;
|
||||||
if (!g_Config->read_ini(set)) {
|
if (!g_Config->read_ini(set)) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
TransmSet use;
|
TransmSet use;
|
||||||
if (!g_Config->get_ini(set, param.use_config, use)) {
|
if (!g_Config->get_ini(set, param.use_config, use)) {
|
||||||
|
g_Logger->error("Not found config by num:[{}]", param.use_config);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
g_Logger->info("Configure At {} under {} on {}", VERSION_BUILD_DATE, VERSION_GIT_HASH,
|
||||||
|
VERSION_GIT_BRANCH);
|
||||||
g_Logger->info("use ip:[{}], port:[{}]", use.ip, use.port);
|
g_Logger->info("use ip:[{}], port:[{}]", use.ip, use.port);
|
||||||
CClient client(g_Logger);
|
CClient client(g_Logger);
|
||||||
client.run(use.ip, std::to_string(use.port));
|
client.run(use.ip, std::to_string(use.port));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user