天天看点

gflags 命令行参数配置库gflag介绍gflag的使用完整代码: 环境(Linux Centos7)

gflag介绍

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

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

gflag的使用

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

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

  • 头文件:
  • 定义参数
//定义参数 定义格式为  参数名  参数默认值  参数描述
//定义到主函数之外
DEFINE_string(ip, "127.0.0.1","ip地址"); //定义一string类型的参数
DEFINE_int32(port, , "端口号");//定义一个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, , "端口号");//定义一个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 ;
}
           
  • Makefile文件
test:test.cc
    g++ $^ -o [email protected] -I ~/part/include -L ~/part/lib -lgflags -lpthread

.PHONY:clean
clean:
    rm test
           

我的

gflags

放在了

part

文件夹下,头文件在

include

文件夹里面,而

gflags静态库

lib

文件夹下,大家根据自己的路径可以修改

  • 运行方式

命令行参数的格式为

"- 参数=参数值"

或者

"--参数=参数值"

的形式

  • 运行结果

第一种:直接运行,结果就是默认值

gflags 命令行参数配置库gflag介绍gflag的使用完整代码: 环境(Linux Centos7)

第二种:可用使用

"-参数=参数值"

形式,定义一个或者两个参数

gflags 命令行参数配置库gflag介绍gflag的使用完整代码: 环境(Linux Centos7)

第三种:也可用使用

"--参数=参数值"

形式,效果一样

gflags 命令行参数配置库gflag介绍gflag的使用完整代码: 环境(Linux Centos7)

第四种:在给bool声明时只能是

1, 0 ,true ,false

4个值

gflags 命令行参数配置库gflag介绍gflag的使用完整代码: 环境(Linux Centos7)