我有以下boost :: program_options程序。升壓程序選項 - 解析命令行崩潰
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
然而,當我在命令行上指定--mingw="stuff"
,我發現它被拒絕。在發出--help
命令之後,似乎只有列表中選項的第一個選項實際上是用opts
註冊的 - 儘管以這種方式鏈接它是本教程推薦的內容。
這個簡單的示例程序出了什麼問題?它基本上來自教程。
哦,雞姦。那真是愚蠢。 – Puppy
公平地說,提升確實會推動合理語法的極限。 –
@JoeZ通常它也超過它們:P – 2013-07-07 19:04:37