gflags 命令行参数配置库

gflag介绍

google开源的gflags是一套命令行参数解析工具

主要就是用来解析命令行参数,并且支持从文件或者从环境变量中读入参数,功能十分强大


gflag的使用

我们以使用为目标进行讲解,不会进行深入了解(其实并不是很难,有兴趣的朋友可以多去了解一下),仅仅让你知道gflags可以怎么快速的,直接使用起来。

至于gflags的安装也不进行过多的介绍,可以自行搜索。

  • 头文件:
#include <gflags/gflags.h>
  • 定义参数
//定义参数 定义格式为  参数名  参数默认值  参数描述
//定义到主函数之外
DEFINE_string(ip, "127.0.0.1","ip地址"); //定义一string类型的参数
DEFINE_int32(port, 8080, "端口号");//定义一个int32 端口号
DEFINE_bool(use_tcp, true, "是否是同 TCP 协议");
  • 解析命令行参数
//解析命令行参数 true 表示不保留定义的flags
gflags::ParseCommandLineFlags(&argc, &argv, true);
  • 打印参数
cout<<"ip: "<<FLAGS_ip<<endl;
cout<<"port: "<<FLAGS_port<<endl;
cout<<"use_tcp: "<<FLAGS_use_tcp<<endl;

完整代码: 环境(Linux Centos7)

  • test.cc
//gflags 命令号参数配置
//用来管理命令行参数

//头文件
#include <gflags/gflags.h>
#include <iostream>
using namespace std;

//定义参数 定义格式为  参数名  参数默认值  参数描述
DEFINE_string(ip, "127.0.0.1","ip地址"); //定义一string类型的参数
DEFINE_int32(port, 8080, "端口号");//定义一个int32 端口号
DEFINE_bool(use_tcp, true, "是否是同 TCP 协议");

int main(int argc, char* argv[])
{
  //解析命令行参数 true 表示不保留定义的flags
  gflags::ParseCommandLineFlags(&argc, &argv, true);
  cout<<"ip: "<<FLAGS_ip<<endl;
  cout<<"port: "<<FLAGS_port<<endl;
  //cout<<"use_tcp: "<<fLB::FLAGS_use_tcp<<endl;
  cout<<"use_tcp: "<<FLAGS_use_tcp<<endl;

  return 0;
}
  • Makefile文件
test:test.cc
    g++ $^ -o $@ -I ~/part/include -L ~/part/lib -lgflags -lpthread

.PHONY:clean
clean:
    rm test

我的gflags放在了part文件夹下,头文件在include文件夹里面,而gflags静态库lib文件夹下,大家根据自己的路径可以修改


  • 运行方式

命令行参数的格式为 "- 参数=参数值" 或者"--参数=参数值"的形式

  • 运行结果

第一种:直接运行,结果就是默认值
这里写图片描述

第二种:可用使用 "-参数=参数值"形式,定义一个或者两个参数
这里写图片描述

第三种:也可用使用 "--参数=参数值"形式,效果一样
这里写图片描述
第四种:在给bool声明时只能是 1, 0 ,true ,false 4个值
这里写图片描述

猜你喜欢

转载自blog.csdn.net/xiaozuo666/article/details/81451843
今日推荐