我正在尝试使用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")
这里我想在命令行中使用较短版本,在文件中使用分组版本。
有没有办法将变量传递给两者,还是应该在代码中解析它们?
答案 0 :(得分:0)
答案在文档中非常简单:
当然,需要组合命令行和配置文件中的值。例如,命令行中指定的优化级别应覆盖配置文件中的值。另一方面,应该合并包含路径。
...如果在命令行和配置文件中同时指定了相同的值,会发生什么?通常,首先存储的值是首选。这就是“--optimization”选项会发生的情况。对于“组合”选项,例如“包含文件”,值将合并 http://www.boost.org/doc/libs/1_55_0/doc/html/program_options/tutorial.html#idp163316264
您可以在命令行和配置中添加重复的选项,如果它是非合并选项,则会优先选择使用po::store()