我正在研究一个框架,我一直在使用TCLAP来处理命令行选项。调用程序help
时,我想打印自动分组的参数用法。输出示例如下:
$ ./program help
Learning Options
-t Train mode
-neg Specifies the path for the negative examples
-pos Specifies the path for the positive examples
Detection Options
-d Detection mode
-param Parameters file path
-o Output folder
-track Enables tracking
Feature Extraction Options
-w Window size
-feat Feature type. Available: SIFT and SURF.
我一直在寻找TCLAP's documentation,但没有找到任何东西。我还在调查StackOverflow post。我发现libobj
似乎是这样做的,但并不完全清楚。
我如何使用TCLAP做到这一点?如果不可能,我可以使用另一个图书馆吗?
奖金 - 小型图书馆,例如TCLAP: - )
答案 0 :(得分:4)
我可以使用另一个图书馆吗?
您可以使用Boost.Program_options库。它相对较小(在Fedora 17上为370k)。
可以找到一个示例here:
namespace po = boost::program_options;
// Declare the supported options.
po::options_description desc("Allowed options");
desc.add_options()
("help", "produce help message")
("compression", po::value<int>(), "set compression level")
;
po::variables_map vm;
po::store(po::parse_command_line(ac, av, desc), vm);
po::notify(vm);
if (vm.count("help")) {
cout << desc << "\n";
return 1;
}
if (vm.count("compression")) {
cout << "Compression level was set to "
<< vm["compression"].as<int>() << ".\n";
} else {
cout << "Compression level was not set.\n";
}
答案 1 :(得分:2)
您可以使用Gengetopt和getopt库。它包含一个text
命令,允许您插入分组标题。一个好处是,它支持命令行args的GNU约定,很多人都知道。