3

我正在开发一个框架,并且一直在使用 TCLAP 来处理命令行选项。当程序help被调用时,我想打印它的参数用法自动分组在 categories。输出示例是:

$ ./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 的文档,但没有找到任何东西。我仍在研究这个StackOverflow 帖子。我发现这libobj似乎可以做到这一点,但并不完全清楚。

我怎么能用 TCLAP 做到这一点?如果不可能,是否有另一个我可以使用的库?

Bonus -一个小型库,例如 TCLAP :-)

4

2 回答 2

4

我可以使用另一个库吗?

您可以使用Boost.Program_options库。它相对较小(Fedora 17 上为 370k)。

可以在这里找到一个例子:

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";
}
于 2012-10-09T06:21:36.430 回答
2

您可以使用Gengetopt和 getopt 库。它包括一个text允许您插入分组标题的命令。一件好事是它支持许多人都知道的命令行参数的 GNU 约定。

于 2012-10-15T23:44:08.947 回答