
Hi Jody, Hi Allen, Allen Bierbaum wrote:
Is there any way to tell the program options parser to ignore options that it does not recognize? If there is no option like this, how can program_options be used with other option parsers?
Jody wrote:
I am not familiar enough with the library to know the "correct" method. The only thing I can think of is that the interface is lacking. I took a few minutes to look at the code in libs/program_options/src/cmdline.cpp and it looks like the only interpretation is empty or a valid option name.
Ok, let me start with a caveat: ignoring unknown options can be ambiguous: program --something 10 --known_option Now, is "10" a value of unknown option or positional option? To remove the problems all unknown options must use this form: --something=10 which may be problem, or may not, depending on your situation. What do you think?
So, at this stage, I think it requires an interface change to support this option.
The detail::cmdline constructor actually has 'allow_unregisted' parameter, which is intended to help with this. However, no non-detail interface allows to specify. Frankly, I don't know if I forgot about this or just decided to wait for a user to request this feature explicitly. Adding a new method to the 'common_command_line_parser' to set 'allow_unregistered' flag and then tweaking common_command_line_parser::run should do the trick? Opinions? - Volodya