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
檔案夾下,大家根據自己的路徑可以修改
- 運作方式
指令行參數的格式為
"- 參數=參數值"
或者
"--參數=參數值"
的形式
- 運作結果
第一種:直接運作,結果就是預設值

第二種:可用使用
"-參數=參數值"
形式,定義一個或者兩個參數
第三種:也可用使用
"--參數=參數值"
形式,效果一樣
第四種:在給bool聲明時隻能是
1, 0 ,true ,false
4個值