用途:
解析命令行参数,将命令行输入变成代码中的变量,固定形式的变量名,用起来很方便。
gflags是google的一个开源的处理命令行参数的库,使用c++开发,具备python接口,可以替代getopt。
使用方法:
#include <iostream>
#include <gflags/gflags.h> //1)头文件
using namespace std;
//2)定义变量
//将需要的命令行参数使用gflags的宏:DEFINE_xxxxx(变量名,默认值,help-string) 定义在文件当中,注意全局域
DEFINE_string(confPath, "../conf/setup.ini", "program configure file.");
DEFINE_int32(port, 9090, "program listen port");
DEFINE_bool(daemon, true, "run daemon mode");
//3)在main函数中加入:(一般是放在main函数的头几行,越早了解用户的需求越好么^_^)
//google::ParseCommandLineFlags(&argc, &argv, true);
//argc和argv想必大家都很清楚了,说明以下第三个参数的作用:
//如果设为true,则该函数处理完成后,argv中只保留argv[0],argc会被设置为1。
//如果为false,则argv和argc会被保留,但是注意函数会调整argv中的顺序。int main( int argc, char** argv){ google::ParseCommandLineFlags(&argc, &argv, true); //4)这样,在后续代码中可以使用FLAGS_变量名访问对应的命令行参数了 cout << "confPath = " << FLAGS_confPath << endl; cout << "port = " << FLAGS_port << endl; if (FLAGS_daemon) { cout << "run background ..." << endl; } else { cout << "run foreground ..." << endl; } cout << "good luck and good bye!" << endl; gflags::ShutDownCommandLineFlags(); return 0;}5)最后,编译成可执行文件之后,用户可以使用:executable --参数1=值1 --参数2=值2 ... 来为这些命令行参数赋值。
./mycmd --var1="test" --var2=3.141592654 --var3=32767 --mybool1=true --mybool2 --nomybool3
参考:
https://blog.csdn.net/lezardfu/article/details/23753741
https://blog.csdn.net/zhouyusong_bupt/article/details/51576612