#include namespace po = boost::program_options; int main(int argc, char *argv[]) { // Declare the supported options. po::options_description poActions("Actions"); poActions.add_options() ("dump-firmware,d", po::value(), "copy firmware from device's flash into this file") ; po::options_description poHidden("Hidden parameters"); poHidden.add_options() ("help", "produce help message") ; po::options_description poComplete("Parameters"); poComplete.add(poActions).add(poHidden); po::variables_map mpArgs; std::string strType, strHost, strSerial; try { po::parsed_options pa = po::parse_command_line(argc, argv, poComplete); for (std::vector::iterator i = pa.options.begin(); i != pa.options.end(); i++) { if (i->string_key.compare("help") == 0) { std::cout << "help text" << std::endl; return 0; } else if ( (i->string_key.compare("dump-firmware") == 0) ) { std::cout << "dumping firmware to file: " << i->value[0] << std::endl; strSerial = i->value[0]; } } } catch (const po::invalid_command_line_syntax& e) { std::cerr << "Invalid command line syntax: " << e.what() << ". Use --help for help." << std::endl; return 1; } return 0; }