Boost程序选项:相同值的多个选项

时间:2014-02-20 12:31:50

标签: c++ boost boost-program-options

我正在尝试使用boost::program_options获取输入选项。

我想从命令行中选择两个选项,从文件中选择另一个选项,但我也想为同一个值设置不同的选项名称。

commandLine.add_options()
 ("dim,d", po::value<int>(&dimension), "Problem dimension")
 ("adv", po::value<bool>(&adv_enabled), "Enable/Disable advection term {1|0}")
 ("div", po::value<bool>(&div_enabled), "Enable/Disable divergance term {1|0}")

file_options.add_options()
 ("dimension",po::value<int>(&dimension), "Set Problem dimension")
 ("enable.advection", po::value<bool>(&adv_enabled), "Enable/Disable advection")
 ("enable.divergance", po::value<bool>(&div_enabled), "Enable/Disable divergance")

这里我想在命令行中使用较短版本,在文件中使用分组版本。

有没有办法将变量传递给两者,还是应该在代码中解析它们?

1 个答案:

答案 0 :(得分:0)

答案在文档中非常简单:

  

当然,需要组合命令行和配置文件中的值。例如,命令行中指定的优化级别应覆盖配置文件中的值。另一方面,应该合并包含路径。

     

...如果在命令行和配置文件中同时指定了相同的值,会发生什么?通常,首先存储的值是首选。这就是“--optimization”选项会发生的情况。对于“组合”选项,例如“包含文件”,值将合并   http://www.boost.org/doc/libs/1_55_0/doc/html/program_options/tutorial.html#idp163316264

您可以在命令行和配置中添加重复的选项,如果它是非合并选项,则会优先选择使用po::store()

调用的首选项。