提升计划选项依赖选项
Boost Program Options dependent options
有没有办法使用 boost::program_options
使程序选项依赖于其他选项?
例如,我的程序可以接受以下示例参数:
wifi --scan --interface=en0
wifi --scan --interface=en0 --ssid=network
wifi --do_something_else
在此示例中,interface
和 ssid
参数仅在附带 scan
时才有效。它们依赖于scan
参数。
有没有办法用boost::program_options
自动强制执行?它当然可以手动实现,但似乎必须有更好的方法。
您可以定义两个依赖选项,只需定义一个小函数,如实际.cpp中所述。例如,您可以指定两个定义option_dependency()
函数的依赖(或冲突)选项:
void option_dependency(const boost::program_options::variables_map & vm,
const std::string & for_what, const std::string & required_option)
{
if (vm.count(for_what) && !vm[for_what].defaulted())
if (vm.count(required_option) == 0 || vm[required_option].defaulted())
throw std::logic_error(std::string("Option '") + for_what
+ "' requires option '" + required_option + "'.");
}
然后呼叫
option_dependency (vm, "interface", "scan");
option_dependency (vm, "ssid", "scan");
boost::program_options::store()
之后
请注意,此功能option_dependency
仅为单向的。在这种情况下ssid
需要scan
选项,但不是相反。
相关文章:
- 如何从C++中的依赖类型中获得它所依赖的类型
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- Win32编译器选项和内存分配
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 将依赖名称显式标记为类型名和模板的奇怪之处
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 通过选项卡的文本设置QTabWidget顺序
- C++GTKMM gui循环依赖关系
- 通过ccmake在cmake中缓存依赖选项
- 当基类是依赖类型时,这是一个缺陷吗
- 如何传递多个 std::文件系统选项?
- 基于编译器选项的编译二进制路径
- 从不同的附加依赖项中识别等同命名的函数
- "perf_event_attr"结构的"read_format"属性的选项到底是什么?
- 使用Bazel构建具有不同编译器/链接器选项的C/C++依赖关系
- VC++ 2012 链接器和库管理员中的其他依赖项选项
- /MT选项(MSVCR100.dll依赖项的静态链接)不适用于Visual Studio
- 提升计划选项依赖选项