【发布时间】:2015-09-28 11:39:21
【问题描述】:
我正在编写一个 C++ 应用程序 A,它在后台调用另一个应用程序 B。一些命令行选项适用于应用程序A,但有些应该转发给B。分隔应使用双破折号--。
例如:
./my_executable_A -a --long_b some_file -- -c --long_d
应该解析应用程序A中的{"-a", "--long_b", "some_file"},并在应用程序A调用时将{"-c", "--long_d"}转发给应用程序B。
我认为将boost::program_options 用于该任务可能有意义,但我没有找到此功能。这可能吗?
注意:用例是libfuse 文件系统,其中一些选项将被转发到fuse_main() 函数。
【问题讨论】:
-
前段时间我搞砸了 Boost 程序选项库,但我似乎记得有一个标志或其他东西要求库在遇到
"--"时停止解析,并且将剩余的参数留在argc/argv。 -
您可能想在 Boost 的错误跟踪器中查看这张票:svn.boost.org/trac/boost/ticket/6991 - 还要考虑您是否愿意修改您的命令行语法,或者它是否完全固定?跨度>
-
如果有另一种简短的语法,我愿意改用它。这个的优点是它被其他 libfuse 文件系统使用,因此是已知的。但是,它们会进行手动解析。
标签: c++ boost getopt boost-program-options