0

我这样设置标志文件:

DECLARE_string(flagfile);
int main(int argc, char** argv) {
  FLAGS_flagfile = "./conf/default.conf"
  ParseCommandLineFlags(&argc, &argv, true);
  ....
}

然后通过命令行更改标志文件

./main --flagfile=./conf/another.conf

但标志文件仍然./conf/default.conf

如何设置标志文件的默认值并接受命令行更改?

4

2 回答 2

0

在调用函数之前,您可以简单地自己检查参数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];
}

这样,您将使用其他配置文件。您可以根据需要更改正则表达式以进行不同的匹配。

于 2015-06-19T03:02:28.430 回答
0

利用

google::SetCommandLineOption("flagfile", "gflags_sample.flags");
于 2021-11-03T01:35:27.023 回答