#include #include namespace po = boost::program_options; int main(int argc, char* argv[]) { try { // 表示オプション po::options_description odVisible; odVisible.add_options() ("help,h", "produce help message.") ("version,v", "print the version of foo.exe and exit.") ("output-path,o", po::value(), "set output directory path.") ; // 非表示オプション po::options_description odHidden; odHidden.add_options() ("input-file", po::value(), "input file") ; // 全オプション po::options_description odAll; odAll.add(odVisible).add(odHidden); // 固定引数 po::positional_options_description pod; pod.add("input-file", 1); // 引数を解析 po::variables_map vm; po::store(po::command_line_parser(argc, argv).options(odAll).positional(pod).run(), vm); po::notify(vm); // 後はオプション毎の処理をするだけ if(vm.count("help")) { std::cout << "Usage: foo [options] input-file" << std::endl; std::cout << odVisible << endl; return 0; } if(vm.count("version")) { std::cout << "foo.exe Version 1.0." << std::endl; return 0; } if(vm.count("output-path")) { } if(vm.count("input-file")) { } return 0; } catch(exception& e) { cout << e.what() << endl; return 1; } }