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

问题描述 投票:1回答:2

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

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

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

c++ boost boost-program-options
2个回答
0
投票

你必须重新解析。

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

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.