代码之家  ›  专栏  ›  技术社区  ›  Ashkan

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

  •  1
  • Ashkan  · 技术社区  · 10 年前

    我正在尝试使用获取输入选项 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 回复  |  直到 10 年前
        1
  •  0
  •   mockinterface    10 年前

    文档中的答案很简单:

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

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

    您可以添加在命令行和配置中重复的选项,如果它是非合并选项,则首选项将被赋予第一个使用 po::store()