如何在 gflags 中为 flagfile 设置默认值?
How to set a default value to flagfile in gflags?
我这样设置标志文件:
DECLARE_string(flagfile);
int main(int argc, char** argv) {
FLAGS_flagfile = "./conf/default.conf"
ParseCommandLineFlags(&argc, &argv, true);
....
}
然后通过命令行更改标志文件
./main --flagfile=./conf/another.conf
但 flagfile 仍然是 ./conf/default.conf
如何设置 flagfile 的默认值并通过命令行接受更改?
您可以在调用ParseCommandLineFlags
函数之前自行检查参数。
例如:
std::regex flag_regex("--flagfile=(.+.conf)")
std::smatch reg_match;
if(std::regex_match(std::string(argv[1]), reg_match, flag_regex){
FLAGS_flagfile = reg_match[0];
}
这样你就可以使用另一个配置文件了。您可以根据需要更改正则表达式以进行不同的匹配。
使用
google::SetCommandLineOption("flagfile", "gflags_sample.flags");
我这样设置标志文件:
DECLARE_string(flagfile);
int main(int argc, char** argv) {
FLAGS_flagfile = "./conf/default.conf"
ParseCommandLineFlags(&argc, &argv, true);
....
}
然后通过命令行更改标志文件
./main --flagfile=./conf/another.conf
但 flagfile 仍然是 ./conf/default.conf
如何设置 flagfile 的默认值并通过命令行接受更改?
您可以在调用ParseCommandLineFlags
函数之前自行检查参数。
例如:
std::regex flag_regex("--flagfile=(.+.conf)")
std::smatch reg_match;
if(std::regex_match(std::string(argv[1]), reg_match, flag_regex){
FLAGS_flagfile = reg_match[0];
}
这样你就可以使用另一个配置文件了。您可以根据需要更改正则表达式以进行不同的匹配。
使用
google::SetCommandLineOption("flagfile", "gflags_sample.flags");