Boost.Program_options:将“--”后的参数转发到另一个程序

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()函数。

eca*_*mur 5

这是默认行为(如果未记录)并且至少从 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)