gflags是一個Google開發的命令行參數處理庫,使用C++編寫,支持從環境變數和配置檔案讀取參數,並且可以替代getopt。
gflags的使用包括定義參數、傳遞參數和解析參數。在定義參數時,可以使用DEFINE_宏,它有三個參數:參數的名稱、默認值和描述其用法的字元串。例如,DEFINE_bool(quiet, true, "列印詳細信息"); 定義了一個名為quiet的布爾參數,其默認值為true,用於控制是否列印詳細信息。
在傳遞參數時,可以通過命令行或配置檔案。例如,命令行參數--quiet=false會設定quiet參數的值為false,而配置檔案中的參數設定如下:
```
quiet: false
```
在解析參數時,可以使用gflags::ParseCommandLineFlags函式,它接受三個參數:命令行參數的個數、命令行參數的地址和是否將成功解析的標記從命令行列表中移除。
例如,以下代碼定義了一個名為confPath的字元串參數,並將其值設定為從配置檔案讀取的值:
```C++
DEFINE_string(confPath, "test.conf", "program configure file.");
```
在主函式中,可以加入gflags的初始化語句:
```C++
gflags::ParseCommandLineFlags(&argc, &argv, true);
```
這樣,就可以在代碼中直接使用FLAGS_confPath來訪問這個參數的值。
此外,gflags還支持從環境變數讀取參數,例如,設定環境變數`FLAGS_confPath=/etc/my.conf`後,可以在代碼中直接使用FLAGS_confPath。
gflags的安裝可以通過從GitHub獲取源碼並使用cmake和make命令進行編譯和安裝。