سؤال

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 found that it was rejected. After issuing the --help command, it seems that only the first option of the options in the list was actually registered with opts- even though chaining it in this way is what the tutorial recommends.

What's going wrong with this simple sample program? It's basically direct from the tutorial.

هل كانت مفيدة؟

المحلول

Looking at the tutorial, I don't see commas between the options. ie:

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

Try removing the commas you have at the end of each option.

نصائح أخرى

I had the same problem with boost_1_63 with open SUSE Leap 42.2. With recompiling all boost libs with ./b2 .... --build-type=complete and reinstalling the problem did not show up any longer. Hopefully this will help at least some of you.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top