【发布时间】:2020-03-02 13:05:19
【问题描述】:
假设我有一个程序采用以下命令行选项:
$ prog1 --foo 1
我还有一个采用这种分层格式的配置文件,foo 参数位于 prog1 范围内:
[prog1]
foo = 42
我对Boost::program_options的理解是命令行选项的定义类似于:
description.add_options()
("foo", "Set foo value");
但是我希望配置文件中的值是默认值(作为调用store() 两次的结果,首先是命令行描述,然后是配置文件描述),能够被命令覆盖-line 选项,但我相信配置文件选项必须声明为:
description.add_options()
("prog1.foo", "Set foo value");
注意这里prog1.foo的使用,尤其是prog1.前缀。
所以我的问题是,如果您使用分层配置文件选项,您如何将这些与命令行选项相关联? IE。如何使--foo 和prog1.foo 在Storage 对象中表示相同的配置值?
【问题讨论】:
标签: c++ boost config command-line-arguments boost-program-options