ubuntu下Gflags安装、配置、使用

一、基础知识

1、Gflags是一种命令行解析工具(处理命令行参数的库),主要用于解析用命令行执行可执行文件时传入的参数。在gflags中flag可以分散的定义在各个文件之中,而不用定义在一起,这就意味着在我们可以在一个单独的文件中只定义这个文件所需要用到的一些flag,链接了该文件应用都可以使用该文件中的flag,这样就能非常方便的实现代码的复用,如果不同的文件定义了相同的flag,则会产生错误,所以需要明确规范gflags的使用规范。

2、gflags支持的参数类型如下

       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
定义参数通过DEFINE_type宏实现,如下所示,分别定义了一个bool和一个string类型的参数,该宏的三个参数含义分别为命令行参数名,参数默认值,以及参数的帮助信息。


DEFINE_bool(big_menu, true, "Include 'advanced' options in the menu listing"); 
DEFINE_string(languages, "english,french,german", 
                 "comma-separated list of languages to offer in the 'lang' menu");

3、google::ParseCommandLineFlags(&argc, &argv, true);

argc 命令行传递的参数个数,argv为命令行传递的参数表,第三个参数功能如下

  • ture:函数处理完成后,argv中只保留argv[0],argc会被设置为1
  • false:argv和argc会被保留,但是注意函数会调整argv中的顺序。

 

二、Gflags安装

1、下载glags源码

git clone https://github.com/gflags/gflags.git

 

 

 

2、进入clone后的gflags目录,在此目录中创建build目录

mkdir build

3、在build目录下执行cmake ..

 

4、执行make 编译

5、执行安装命令

make install

 

 

 

三、Gflags使用

1、编写testglfags.cpp

内容如下:

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

DEFINE_bool(isvip, false, "If Is VIP");
DEFINE_string(ip, "127.0.0.1", "connect ip");
DECLARE_int32(port);
DEFINE_int32(port, 80, "listen port");

int main(int argc, char** argv)
{
  gflags::ParseCommandLineFlags(&argc, &argv, true);
  std::cout<<"ip:"<<FLAGS_ip<<std::endl;
  std::cout<<"port:"<<FLAGS_port<<std::endl;
  if (FLAGS_isvip)
  {
      std::cout<<"isvip:"<<FLAGS_isvip<<std::endl;
  }
  gflags::ShutDownCommandLineFlags();
  return 0;
}

2、执行编译命令

sudo g++  -Wall -o testgflags testgflags.cpp -lgflags -lpthread
出现以下错误:

执行如下语句,解决此错误问题:

sudo apt-get purge libgflags-dev
 

重新编译,编译成功。

3、执行该程序

 测试成功!

4、进一步扩展

如果命令参数过多,还需要每次运行的时候输入命令参数,这样太麻烦,可以把命令参数提前写入flag文件,然后使用。

编译flagfile.flags文件

文件内容如下:

-ip="192.168.31.14" -port=8000 -isvip=ture

不用编译cpp文件,直接运行

参考链接:

【1】https://blog.csdn.net/Lo_Bamboo/article/details/105383264?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase

【2】https://blog.csdn.net/jcjc918/article/details/50876613?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

【3】https://blog.csdn.net/lanmolei814/article/details/78478124?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1

【4】https://www.cnblogs.com/xueqiuqiu/articles/10176161.html

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Ubuntu安装gflags,可以按照以下步骤进行操作: 1. 首先,通过以下命令克隆gflags的源代码库: ``` git clone https://github.com/gflags/gflags.git ``` 2. 进入克隆的代码库目录: ``` cd gflags ``` 3. 接下来,需要安装编译工具和依赖项。使用以下命令安装这些依赖项: ``` sudo apt-get install cmake sudo apt-get install g++ ``` 4. 创建一个build目录并进入该目录: ``` mkdir build cd build ``` 5. 在build目录中,运行以下命令以生成Makefile: ``` cmake .. ``` 6. 使用以下命令编译和安装gflags库: ``` make sudo make install ``` 7. 安装完成后,您可以在Ubuntu使用gflags库了。 请注意,安装过程中可能会遇到其他依赖项或错误。如果出现错误,请根据错误提示解决相关问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Ubuntu 系统安装 Gflags](https://blog.csdn.net/qq_42102546/article/details/129369962)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ubuntu下Gflags安装配置使用](https://blog.csdn.net/kenjianqi1647/article/details/106598057)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值