gflags 使用方式

设置命令行flag

一般使用flag的原因是为了能在命令行指定一个非默认值。以 foo.cc 为例,可能的用法是:

app_containing_foo --nobig_menu -languages="chinese,japanese,korean" ...

执行 ParseCommandLineFlags 会设置 FLAGS_big_menu = false , FLAGS_languages = "chinese,japanese,korean" 。

注意这种在名字前面加“no”的设置布尔flag为false的语法。

设置“languages”flag的方法有:

app_containing_foo --languages="chinese,japanese,korean"
app_containing_foo -languages="chinese,japanese,korean"
app_containing_foo --languages "chinese,japanese,korean"
app_containing_foo -languages "chinese,japanese,korean"

布尔flag稍有不同:

app_containing_foo --big_menu
app_containing_foo --nobig_menu
app_containing_foo --big_menu=true
app_containing_foo --big_menu=false

还包括以上这些的单短线的变种

建议只使用一种形式:非布尔flag, --variable=value ;布尔flag, --variable/--novariable 。保持一致性有一定的好处。

在命令行使用未定义的flag会在执行时失败。如果需要允许未定义的flag,可以使用 --undefok 来去掉报错。

和 getopt() 一样, -- 可以用于结束flag。

重复指定flag使用最后的一个。

不支持单字母的形式的flag,也不支持单短线后的flag合并,像 ls -la 那样。

posted @ 2021-10-11 16:30  鸭子船长  阅读(157)  评论(0编辑  收藏  举报