Increase program parameters - crash while parsing command line

I have the following boost :: program_options program.

boost::program_options::options_description opts("Allowed options"); opts.add_options() ("help", "produce help message"), ("mingw", boost::program_options::value<std::string>(), "Set the install path for MinGW"), ("triple", boost::program_options::value<std::string>(), "Set the target triple"), ("output", boost::program_options::value<std::string>(), "Set the output file"), ("input", boost::program_options::value<std::vector<std::string>>(), "Set an input file."), ("include", boost::program_options::value<std::vector<std::string>>(), "Set an include path.") ; boost::program_options::positional_options_description posopts; posopts.add("input", -1); boost::program_options::variables_map vm; try { boost::program_options::store(boost::program_options::command_line_parser(argc, argv).options(opts).positional(posopts).run(), vm); } catch(std::exception& e) { std::cout << e.what(); std::cin.get(); } boost::program_options::notify(vm); if (vm.find("help") != vm.end()) { std::cout << opts << "\n"; std::cin.get(); return 1; } // Actual program logic 

However, when I specify --mingw="stuff" on the command line, I find that it was rejected. After issuing the --help command, it seems that only the first option option in the list was actually registered with opts - although binding it this way is what the tutorial recommends.

What happens with this simple sample program? This is mainly directly from the textbook.

+4
source share
2 answers

Looking at the tutorial, I do not see commas between the options. i.e:

 desc.add_options() ("help", "produce help message") // no comma here! ("compression", po::value<int>(), "set compression level") ; 

Try to remove the commas that you have at the end of each option.

+12
source

I had the same problem with boost_1_63 with open SUSE Leap 42.2. With recompilation of all boost files from. / b 2 .... - build-type = complete and reinstalling the problem no longer displayed. I hope this helps at least some of you.

0
source

Source: https://habr.com/ru/post/1490160/


All Articles