boost.program_options库存储并允许以编程方式访问程序运行时在命令行上提供的参数。
调用一些库函数(对我来说是未知的,或易于编码)实例化选项/参数,一旦程序运行并且已经解析了所有CLI参数,也会更改选项的值参数是否切实可行?换句话说,是否可以简单地启动(即添加)已在源代码中配置的现有选项,但在调用时未提及?
为什么?假设程序有一个GUI,用户想要在命令行更新一些设置。
你必须重新解析。
动态添加program_options_descriptions更多的是您有一个插件添加其他选项而不是更改已经解析的内容。或者获取几组选项(基本,高级,环境变量和配置文件源)并填充variables_map。
options_description有一个add()重载,它带有另一个options_description实例,并将该实例的选项添加到此。但是,这样的添加不会导致variable_map中已解析的项目发生更改。
重新启动程序将使用第二个命令行创建第二个进程。这不是一个大问题,但是您需要进程间通信才能将第二个命令行转发到第一个进程。幸运的是,还有Boost.Interprocess。
一旦你的进程发现有一个预先存在的进程,并转发了第二组参数,它就可以关闭。我将在主进程中重新处理命令行选项。