Google gflags参数传递

gflags Google Commandline Flags

gflags 是google开源的一套命令行参数解析工具,比 getopt 功能更加强大,使用起来更加方便。用在百度Apollo中gflag被广泛的应用在各种全局变量中,例如节点名,变量名等等

如何使用Gflag

1. 声明&定义 配置项

声明格式:DECLARE_xxx(变量名)

utils_gflags.h
#ifndef UTILS_GFLAGS_H_
#define UTILS_GFLAGS_H_
#include "gflags/gflags.h"
DECLARE_string(work_root);
DECLARE_string(assets_path);
// configs
DECLARE_string(name);
DECLARE_string(version);
DECLARE_bool(enable_update);
#endif  // UTILS_GFLAGS_H_

定义格式: DEFINE_xxxxx(变量名,默认值,help-string)

  • 其中xxxxx是数据类型,如:bool、int32、int64、uint64、double、string
utils_gflags.cc
#include "utils_gflags.h"

DEFINE_string(work_root, "path/root",
              "the root path of app");
DEFINE_string(name, "QGC", "software name");
DEFINE_bool(enable_update, false, "enable update time");

DEFINE_bool: boolean ;
DEFINE_int32: 32-bit integer;
DEFINE_int64: 64-bit integer;
DEFINE_uint64: unsigned 64-bit integer;
DEFINE_double: double;
DEFINE_string: C++ string;

2. 设置配置项参数

app_flagfile.txt

# 1. Flags in this file should be 
#  decleared in utils_gflags.h
#  defined in utils_gflags.cc
# 2. To use it, add the following line into your command line arguments or
#    already-in-use flagfile:
#        --flagfile=path_to/module_flagfile.txt
# 3. To override the flag values, you must set it after this file, as all Flags
#    are evaluated strictly in order.
--work_root=""test/path
--name="app_name"
--enable_update=true

3. 引用配置项

#include "utils_gflags.h"

 //通过命令行传递参数
 google::ParseCommandLineFlags(&argc, &argv, true);

 //通过文件配置参数
 std::string conf_path = "/conf/app_flagfile.txt";
 google::SetCommandLineOption("flagfile", conf_path.c_str());

....
FLAGS_work_root
FLAGS_name
FLAGS_enable_update

说明文档:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一銤阳光

希望分享的内容对你有帮助

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值