How to set a default value to flagfile in gflags?

2k views Asked by At

I set flagfile like this:

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

then change flagfile by command line

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

but flagfile is still ./conf/default.conf

How to set flagfile's default value and also accept changes by command line?

2

There are 2 answers

0
meneldal On BEST ANSWER

You can simply check the parameters yourself before calling the ParseCommandLineFlags function.

For example something like:

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];
}

That way you will use the other configuration file. You can change the regex to match differently depending on what you need.

0
he shouyong On

Use

google::SetCommandLineOption("flagfile", "gflags_sample.flags");