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

文章目录

  • 前言
    • 什么是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  728 05:06 appveyor.yml
-rw-rw-r-- 1 zhouchen zhouchen    32  728 05:06 AUTHORS.txt
drwxrwxr-x 3 zhouchen zhouchen  4096  728 05:06 bazel/
-rw-rw-r-- 1 zhouchen zhouchen   629  728 05:06 BUILD
-rw-rw-r-- 1 zhouchen zhouchen 13050  728 05:06 ChangeLog.txt
drwxrwxr-x 2 zhouchen zhouchen  4096  728 05:06 cmake/
-rw-rw-r-- 1 zhouchen zhouchen 29703  921 17:45 CMakeLists.txt
-rw-rw-r-- 1 zhouchen zhouchen  1479  728 05:06 COPYING.txt
drwxrwxr-x 2 zhouchen zhouchen  4096  728 05:06 doc/
-rw-rw-r-- 1 zhouchen zhouchen   113  728 05:06 .gitattributes
-rw-rw-r-- 1 zhouchen zhouchen   407  728 05:06 .gitignore
-rw-rw-r-- 1 zhouchen zhouchen  4617  728 05:06 INSTALL.md
-rw-rw-r-- 1 zhouchen zhouchen 13662  728 05:06 README.md
drwxrwxr-x 2 zhouchen zhouchen  4096  728 05:06 src/
drwxrwxr-x 4 zhouchen zhouchen  4096  728 05:06 test/
-rw-rw-r-- 1 zhouchen zhouchen   409  728 05:06 .travis.yml
-rw-rw-r-- 1 zhouchen zhouchen   255  728 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例子。


你可能感兴趣的:(google,ubuntu,学习,linux)