如何在 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");