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
文件夹下,大家根据自己的路径可以修改
- 运行方式
命令行参数的格式为
"- 参数=参数值"
或者
"--参数=参数值"
的形式
- 运行结果
第一种:直接运行,结果就是默认值

第二种:可用使用
"-参数=参数值"
形式,定义一个或者两个参数
第三种:也可用使用
"--参数=参数值"
形式,效果一样
第四种:在给bool声明时只能是
1, 0 ,true ,false
4个值