文章目录

  • 前言
    • 什么是GFLAGS
    • gflags的优势
    • gflags安装和使用(ubuntu环境)
      • 下载
      • 配置
      • 编译
      • 安装

前言

什么是GFLAGS

Gflags是一种命令行解析工具,主要用于解析用命令行执行可执行文件时传入的参数。与getops()不同的是,在gflags中flag可以分散的定义在各个文件之中,而不用定义在一起,这就意味着在我们可以在一个单独的文件中只定义这个文件所需要用到的一些flag,链接了该文件应用都可以使用该文件中的flag,这样就能非常方便的实现代码的复用,如果不同的文件定义了相同的flag,则会产生错误,所以需要明确规范gflags的使用规范。
gflags在2008年首次推出,至今已有10年时间,目前有很多公司都在用gflags。

gflags的优势

用gflags跟用配置文件相比,能实现的功能其实没多大差别。但用gflags有个好处就是,很容易跟脚本结合在一起。比如最近笔者需要调用一个用了gflags的程序将某个文件里头的所有用户都执行某个操作,这个应用程序如果不用gflags,则需要在配置里头指定要读取的文件,甚至需要在程序里头添加读文件逐行进行处理的代码。现在用了gflags就很方便了。

cat /data/pd.log | while read line;do ./baike_oidb_client …/conf/baike.conf --action=1 --uins=$line;done

直接一行shell脚本搞定,当然就想这行命令所显示的,有些固定项我们也可以用配置文件,免得整个命令太长。

当然其他好处就是做模块隔离,这个跟宏相比的好处是动态运行时启动或者挂掉某些功能,而不需要重新编译。

gflags安装和使用(ubuntu环境)

下载

通过github官方或通过git 命令clone

  1. 通过github官方下载最新的gtest源码。
  2. 通过命令
    git clone https://github.com/gflags/gflags

配置

  1. 下载后解压文件下:
总用量 136
-rw-rw-r-- 1 zhouchen zhouchen  1447  7月 28 05:06 appveyor.yml
-rw-rw-r-- 1 zhouchen zhouchen    32  7月 28 05:06 AUTHORS.txt
drwxrwxr-x 3 zhouchen zhouchen  4096  7月 28 05:06 bazel/
-rw-rw-r-- 1 zhouchen zhouchen   629  7月 28 05:06 BUILD
-rw-rw-r-- 1 zhouchen zhouchen 13050  7月 28 05:06 ChangeLog.txt
drwxrwxr-x 2 zhouchen zhouchen  4096  7月 28 05:06 cmake/
-rw-rw-r-- 1 zhouchen zhouchen 29703  9月 21 17:45 CMakeLists.txt
-rw-rw-r-- 1 zhouchen zhouchen  1479  7月 28 05:06 COPYING.txt
drwxrwxr-x 2 zhouchen zhouchen  4096  7月 28 05:06 doc/
-rw-rw-r-- 1 zhouchen zhouchen   113  7月 28 05:06 .gitattributes
-rw-rw-r-- 1 zhouchen zhouchen   407  7月 28 05:06 .gitignore
-rw-rw-r-- 1 zhouchen zhouchen  4617  7月 28 05:06 INSTALL.md
-rw-rw-r-- 1 zhouchen zhouchen 13662  7月 28 05:06 README.md
drwxrwxr-x 2 zhouchen zhouchen  4096  7月 28 05:06 src/
drwxrwxr-x 4 zhouchen zhouchen  4096  7月 28 05:06 test/
-rw-rw-r-- 1 zhouchen zhouchen   409  7月 28 05:06 .travis.yml
-rw-rw-r-- 1 zhouchen zhouchen   255  7月 28 05:06 WORKSPACE
  1. 设置动态库
    CMakeList.txt中默认编译gflags为静态库,若想实现编译出动态库,需要设置
    gflags-master/CMakeList.txt
gflags_define (BOOL BUILD_SHARED_LIBS          "Request build of shared libraries."                                       ON ON)
gflags_define (BOOL BUILD_STATIC_LIBS          "Request build of static libraries (default if BUILD_SHARED_LIBS is OFF)." OFF OFF)
  1. 编译出gtest自带的test
    还是在这个CMakeList.txt设置
gflags_define (BOOL BUILD_TESTING              "Enable build of the unit tests and their execution using CTest."          ON ON)

编译

cd gflags-master
mkdir build
cd build
cmake ..
make

安装

sudo mkdir /usr/lib/gflags
cd gflags-master/build/lib
sudo cp * /usr/lib/gflags/
cd gflags-master/include
sudo cp ./gflags /usr/include/gflags -R
sudo chmod 755 /usr/lib/gflags/*.so
sudo chmod 755 /usr/include/gflags/ -R

到此,Gflags就算配置完成,可以在C++程序中以动态链接库的方式使用。
后续学习test例子。


gflags学习笔记(一)gflags的介绍和安装(ubuntu环境)相关推荐

  1. HTML/CSS学习笔记01【概念介绍、基本标签】

    w3cschool菜鸟教程.CHM(腾讯微云):https://share.weiyun.com/c1FaX6ZD HTML/CSS学习笔记01[概念介绍.基本标签.表单标签][day01] HTML ...

  2. C语言学习笔记---001C语言的介绍,编译过程原理,工具等

    C语言学习笔记---001C语言的介绍,编译过程原理,工具等 创梦技术交流平台:资源下载,技术交流,网络赚钱: 交流qq群:1群:248318056 2群:251572072 技术交流平台:cre.i ...

  3. ESP32学习笔记(一) 芯片型号介绍

    ESP32学习笔记(一) 芯片型号介绍 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介 ...

  4. STM32 HAL库学习笔记2 HAL库介绍

    STM32 HAL库学习笔记2 HAL库介绍 CMSIS标准 一.再次认识HAL库 HAL库设计思想 HAL库实现方式 以GPIO模块为例 GPIO外设数据类型 GPIO外设接口函数 二.使用HAL库 ...

  5. HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介

    本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...

  6. TI CC2530 学习笔记-0-IAR 8.10下载与安装

    TI CC2530 学习笔记-目录 TI CC2530 学习笔记-0-IAR 8.10下载与安装 IAR 8.10下载:IAR8.10 for 8051 IAR 安装:安装教程

  7. LINUX学习笔记1 网卡配置(网络适配器安装失败问题解决)

    LINUX学习笔记1 网卡配置(网络适配器安装失败问题解决) 概述 每一次选修课总会碰到一堆问题,我真的是幸运得很.这次是LINUX服务器管理这门课,最开始安装虚拟机一切正常(用的是VMware安装u ...

  8. 【安卓学习之开发工具】VMware虚拟机安装ubuntu

    █ [安卓学习之开发工具]VMware虚拟机安装ubuntu █ 相关文章: [安卓学习之开发工具] Android Studio学习 1 - 入门篇 [安卓学习之开发工具] Android Stud ...

  9. 大数据基础学习二:在VMware虚拟机上安装Ubuntu完整步骤及需要注意的问题(以VMware Workstation 15.1.0 Pro和Ubuntu18.04.3优麒麟版为例)

    大数据基础学习二:在VMware虚拟机上安装Ubuntu完整步骤及需要注意的问题 (以VMware Workstation 15.1.0 Pro for Windows和Ubuntu18.04.3优麒 ...

  10. ROS入门笔记(二):ROS安装与环境配置及卸载(重点)

    ROS入门笔记(二):ROS安装与环境配置及卸载(重点) 文章目录 1 ROS安装步骤 1.1 ROS版本 1.2 确定Ubuntu版本号 1.3 安装ROS 1.3.1 Ubuntu初始环境配置 1 ...

最新文章

  1. Codeforces Global Round 3
  2. 【学习笔记】比较分别用prim和kruskal实现最小生成树和算法优化方案
  3. 为何苦命干活的人成不了专家?
  4. 前端学习(2748):uniapp创建项目和演示
  5. 什么是ZooKeeper
  6. jsp页面判断输入编号已存在mysql中_面试官让我聊聊Mysql基础架构之日志文件与数据文件...
  7. JVM GC调优参数说明
  8. 【转】基础知识系列2--线性表之链表
  9. android开发学习笔记系列(1)-android起航
  10. LoadRunner 11简单使用
  11. css伪元素总结(内附实例)
  12. 03ospf虚链路(Virtual Link)及冗余
  13. 无偏移谷歌瓦片地址_下载谷歌高清无偏移卫星地图
  14. Xcelsius 2008 在win10 64位系统下 基于OFFICE2010-x64 的安装
  15. Unable to negotiate with port 51732: no matching host key type found. Their offer:
  16. PS改变背景图片/颜色(3种方法)
  17. 打包开发板根文件系统,并制作成img镜像
  18. EventSystems之鼠标相关事件(实现拖曳功能常用)
  19. 美国CPSIA关于玩具和儿童产品的测试要求,CPC证书要求
  20. [源码和文档分享]基于Android系统手机通讯录管理软件的设计与开发

热门文章

  1. 严重性代码说明项目文件行禁止显示状态错误项目 Common 的 NuGet 包还原失败: 找不到“X.X.X”版本的程序包“XXXXXX”。
  2. rockchip 设置JTAG FUC 无效 成普通io口
  3. 写的桌面程序360安全卫士等软件提示未知或者报毒怎么办?最佳解决方案
  4. GitHub开源推荐 | 炫酷的Material风格Qt控件
  5. 大数据工程师的日常工作内容
  6. CSS的两个class选择器紧挨在一起
  7. Hadoop的一些认识--------我与Hadoop不得不说的故事
  8. 有了链路日志增强之后再也不怕领导在群里艾特自己某某功能报错了
  9. 【STM32单片机+DHT11温度传感器】快速上手,适用于多种型号芯片
  10. 关于ADPlus的几点问题