在CLI解析完成后,可以添加boost program_options和参数吗?

时间:2017-12-02 23:40:48

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

boost.program_options库存储并允许以编程方式访问程序运行时在命令行上提供的参数。

在程序运行并且已经解析了所有CLI参数后,调用某些库函数(我不知道,或者易于编码)来实例化选项/参数,更改选项的值参数是否切实可行?换句话说,是否可以简单地启动(即添加)源代码中已配置的现有选项,但在调用时未提及?

为什么呢?假设程序有一个GUI,用户想要更新命令行中的一些设置。

2 个答案:

答案 0 :(得分:0)

你必须重新解析。

如果您有一个添加其他选项的插件而不是更改已经解析的内容,则动态添加program_options_descriptions更多。或者获取几组选项(基本,高级,环境变量和配置文件源)并填充variables_map。

options_description有一个add()重载,它带有另一个options_description实例,并将该实例的选项添加到此实例中。但是,这样的添加不会导致variable_map中已经解析的项目发生变化。

答案 1 :(得分:0)

重新启动程序将使用第二个命令行创建第二个进程。这不是一个大问题,但是您需要进程间的通信才能将第二个命令行转发到第一个进程。幸运的是,boost也有Boost.Interprocess

一旦您的进程发现存在一个预先存在的进程,并转发了第二组参数,它就可以关闭。我会在主要过程中对命令行选项进行重新处理。