技术准备一:gflags
一、介绍
1、作用
用于解析程序运行时获取的参数。
2、使用
(1)包含头文件
#include <gflags/gflags.h>
(2)makefile 链接
g++ main.cc -o main -lgflags
(3)宏定义参数
在程序执行前,需要先用宏定义一些会用到的参数,便于后续在程序中用 gflags 的宏获取参数。
例:
DEFINE_bool(reuse_addr, true, "是否开始⽹络地址重⽤选项");
DEFINE_int32(log_level, 1, "⽇志等级:1-DEBUG, 2-WARN, 3-ERROR");
DEFINE_string(log_file, "stdout", "⽇志输出位置设置,默认为标准输出");
宏定义的参数分别是:命令行参数名,参数默认值,参数备注
还支持 double, int64 等多种类型的参数定义。
(4)访问参数
在程序中使用 FLAGS_定义的命令行参数名来获取指定参数。
(5)初始化所有定义参数、
google::ParseCommandLineFlags(&argc, &argv, true);
第三个参数若为 true,则相当于把参数从 argv 中拿去拿走,false 就是只使用不拿走,但是会改变参数在 argv 的位置。
(6)命令行参数设置
对于 string int:--key=value
对于 bool:--key=true / false
(7)配置文件定义参数
配置文件中字符串数据不要用双引号。
mian.conf:
-reuse_addr=true
-log_level=3 -log_file=./log/main.log
执行:--flagfile=filename