本文**:
最近看到的乙個示例**中有使用gflags,就去簡單查了一下資料學習一下。
github
官方使用文件
gflags簡明教程
gflags使用文件
gflags是google開源的一套命令列引數處理的開源庫,包括c++的版本和python 版本。
和 getopt() 之類的庫不同,flag的定義可以散布在各個原始碼中,而不用放在一起。乙個原始碼檔案可以定義一些它自己的flag,鏈結了該檔案的應用都能使用這些flag。這樣就能非常方便地復用**。如果不同的檔案定義了相同的flag,鏈結時會報錯。
定義乙個flag是簡單的:只需要使用你想用的型別的相應的巨集就可以。
example:
// foo.cc
#include define_bool(big_menu, true, "include 'advanced' options in the menu listing");
define_string(languages, "english,french,german",
"comma-separated list of languages to offer in the 'lang' menu");
支援的型別:
定義的flag可以像正常的變數一樣使用,只需在前面加上flags_
字首。如前面例子中的定義了flags_big_menu
和flags_languages
兩個變數。可以像一般變數一樣讀寫:
if (flags_consider_made_up_languages)
flags_languages += ",klingon"; // implied by --consider_made_up_languages
if (flags_languages.find("finnish") != string::npos)
handlefinnish();
定義好引數後,最後要告訴執行程式去處理命令列傳入的引數,使得定義的flag引數得到正確賦值。
通常是在main()
函式中呼叫
google::parsecommandlineflags(&argc, &ar**, true);
argc
和ar**
就是main
的入口引數,因為這個函式會改變他們的值,所以都是以指標傳入。
第三個引數被稱為remove_flags
。如果它是true,parsecommandlineflags
會從ar**
中移除標識和它們的引數,相應減少argc
的值。然後ar**
只保留命令列引數。
相反,remove_flags
是false,parsecommandlineflags
會保留argc
不變,但將會重新調整它們的順序,使得標識再前面。
note:./foo --big_menu=false arg1
中再big_menu
是標識,false
是它的引數,arg1
是命令列引數。
gFlags 使用指南
最近看到的乙個示例 中有使用gflags,就去簡單查了一下資料學習一下。github 官方使用文件 gflags簡明教程 gflags使用文件 gflags是google開源的一套命令列引數處理的開源庫,包括c 的版本和python 版本。和 getopt 之類的庫不同,flag的定義可以散布在各個...
Ubuntu apt 使用指南
起初gnu linux系統中只有.tar.gz。使用者必須自己編譯他們想使用的每乙個程式。在debian出現之後,人們認為有必要在系統中新增 一種機制用來管理安裝在計算機上的軟體包。人們將這套系統稱為dpkg。至此著名的 package 首次在gnu linux上出現。不久之後紅帽子也 開始著手建立...
CImageList使用指南
1.綜述 在mfc 中cimagelist 類封裝了 影象列表控制項的功能,影象列表是乙個具有相同大小的 影象 可以是不同 型別 的集合,其主要用於 應用程式中大規模 圖示的儲存。該控制項是不可 見的,通常與其它如 clistbox ccombobox ccomboboxex ctabctrl 以及...