2015-06-19 3 views
0

Я поставил flagfile так:Как установить значение по умолчанию для файла флага в gflags?

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

затем измените flagfile командной строкой

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

но flagfile еще "./conf/default.conf"

Как установить по умолчанию flagfile в значение, а также принимать изменения по командной строке?

ответ

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

Таким образом, вы будете использовать другой конфигурационный файл. Вы можете изменить регулярное выражение, чтобы оно соответствовало по-разному в зависимости от того, что вам нужно.

Смежные вопросы