今天使用了Gflags库完成对exe文件的参数配置,下面进行简要总结。
1. gflags库的配置
1)在GitHub上下载后需要使用CMake编译为库,网上教程很多在此不再叙述;
2)C++项目文件上进行配置,配置项主要为【VC++目录】下的【包含目录】和【库目录】;
3)配置项有【链接器】的【输入】下的【附加依赖项】;
2. 参数配置代码编写(见代码备注)
1)参数有效性检查
static bool ValidatePort(const char* flagname, int32_t val) {
if (val>0&&val<32768)
{
return true;
}
return false;
}
2)参数的定义
//第一个参数就是命令行要输入的参数;第二个参数是前面参数的默认值;第三个参数是帮助说明信息(-help时显示)
DEFINE_int32(port, 6379, "what is the port ?"); //定义变量,在代码中使用变量名前多个前缀“FLAGS_”
DEFINE_string(ip, "127.0.0.1", "My ip ?");
3)主函数的编写
int main(int argc, char** argv) //函数格式,第二个参数表示传参数组的地址,第一个参数表示数组的个数,也表示可传参的数量,无需设定
{
gflags::ParseCommandLineFlags(&argc, &argv, true);//参数定义和注册函数均完成后,调用解析函数开始解析命令行,值得注意的就是第三个参数了。如果设置为true,gflags就会移除解析过的参数。
bool isPort = gflags::RegisterFlagValidator(&FLAGS_port, &ValidatePort);//获取参数值后做参数检查,第二个参数为判断有效性函数结果
int32_t Port = FLAGS_port;
std::string Ip = FLAGS_ip;
std::cout << Port << std::endl;
std::cout << Ip << std::endl;
system("pause");
gflags::ShutDownCommandLineFlags();
return 0;
}