Hei*_*nzi 2 c++ boost getopt boost-program-options
我正在编写一个 C++ 应用程序A,它在后台调用另一个应用程序B。一些命令行选项适用于应用程序A,但有些应转发给B。分隔应该使用双破折号--。
例如:
./my_executable_A -a --long_b some_file -- -c --long_d
Run Code Online (Sandbox Code Playgroud)
应该解析{"-a", "--long_b", "some_file"}在应用阿并转发{"-c", "--long_d"}到应用乙当它被称为甲。
我认为boost::program_options用于该任务可能有意义,但我没有找到此功能。这可能吗?
注意:用例是一个libfuse文件系统,其中一些选项将被转发到fuse_main()函数。
这是默认行为(如果未记录)并且至少从 Boost 1.33 开始;--被视为“终止符”,并且所有命令行参数都可以作为位置选项访问:
bool a = false, b = false;
std::vector<std::string> command;
po::options_description desc("Allowed options");
desc.add_options()
("long_a,a", po::bool_switch(&a), "a")
("long_b,b", po::bool_switch(&b), "b")
("command", po::value(&command));
po::positional_options_description p;
p.add("command", -1);
po::variables_map vm;
po::parsed_options parsed = po::command_line_parser(argc, argv).options(desc).positional(p).run();
po::store(parsed, vm);
po::notify(vm);
Run Code Online (Sandbox Code Playgroud)