天天看點

gflags 指令行參數配置庫gflag介紹gflag的使用完整代碼: 環境(Linux Centos7)

gflag介紹

google開源的gflags是一套指令行參數解析工具

主要就是用來解析指令行參數,并且支援從檔案或者從環境變量中讀入參數,功能十分強大

gflag的使用

我們以使用為目标進行講解,不會進行深入了解(其實并不是很難,有興趣的朋友可以多去了解一下),僅僅讓你知道gflags可以怎麼快速的,直接使用起來。

至于gflags的安裝也不進行過多的介紹,可以自行搜尋。

  • 頭檔案:
  • 定義參數
//定義參數 定義格式為  參數名  參數預設值  參數描述
//定義到主函數之外
DEFINE_string(ip, "127.0.0.1","ip位址"); //定義一string類型的參數
DEFINE_int32(port, , "端口号");//定義一個int32 端口号
DEFINE_bool(use_tcp, true, "是否是同 TCP 協定");
           
  • 解析指令行參數
//解析指令行參數 true 表示不保留定義的flags
gflags::ParseCommandLineFlags(&argc, &argv, true);
           
  • 列印參數
cout<<"ip: "<<FLAGS_ip<<endl;
cout<<"port: "<<FLAGS_port<<endl;
cout<<"use_tcp: "<<FLAGS_use_tcp<<endl;
           

完整代碼: 環境(Linux Centos7)

  • test.cc
//gflags 指令号參數配置
//用來管理指令行參數

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

//定義參數 定義格式為  參數名  參數預設值  參數描述
DEFINE_string(ip, "127.0.0.1","ip位址"); //定義一string類型的參數
DEFINE_int32(port, , "端口号");//定義一個int32 端口号
DEFINE_bool(use_tcp, true, "是否是同 TCP 協定");

int main(int argc, char* argv[])
{
  //解析指令行參數 true 表示不保留定義的flags
  gflags::ParseCommandLineFlags(&argc, &argv, true);
  cout<<"ip: "<<FLAGS_ip<<endl;
  cout<<"port: "<<FLAGS_port<<endl;
  //cout<<"use_tcp: "<<fLB::FLAGS_use_tcp<<endl;
  cout<<"use_tcp: "<<FLAGS_use_tcp<<endl;

  return ;
}
           
  • Makefile檔案
test:test.cc
    g++ $^ -o [email protected] -I ~/part/include -L ~/part/lib -lgflags -lpthread

.PHONY:clean
clean:
    rm test
           

我的

gflags

放在了

part

檔案夾下,頭檔案在

include

檔案夾裡面,而

gflags靜态庫

lib

檔案夾下,大家根據自己的路徑可以修改

  • 運作方式

指令行參數的格式為

"- 參數=參數值"

或者

"--參數=參數值"

的形式

  • 運作結果

第一種:直接運作,結果就是預設值

gflags 指令行參數配置庫gflag介紹gflag的使用完整代碼: 環境(Linux Centos7)

第二種:可用使用

"-參數=參數值"

形式,定義一個或者兩個參數

gflags 指令行參數配置庫gflag介紹gflag的使用完整代碼: 環境(Linux Centos7)

第三種:也可用使用

"--參數=參數值"

形式,效果一樣

gflags 指令行參數配置庫gflag介紹gflag的使用完整代碼: 環境(Linux Centos7)

第四種:在給bool聲明時隻能是

1, 0 ,true ,false

4個值

gflags 指令行參數配置庫gflag介紹gflag的使用完整代碼: 環境(Linux Centos7)