boost::program_options : как добавить текст описания программы

Я хотел бы, чтобы текст печатался перед описанием разрешенных опций, когда я печатаю свой options_description. Что-то типа :

This program counts from 1 to 10. <--- this is what is missing

Generic options:
-h [ --help ]         Produce help message.
-v [ --version ]      Show program name/version banner and exit.

В настоящее время я добавляю его вручную:

if (vm.count("help")) {
    cout << "options_description\n\n" << my_options_description << endl;
    return 1;
}

Можно ли сохранить это непосредственно в объекте options_description?


person Barth    schedule 05.08.2011    source источник


Ответы (1)


Класс options_description предназначен для описания параметров, а не программы. Библиотека Program_options на самом деле не предназначена для документации общего назначения.

Я полагаю, вы могли бы злоупотреблять ярлыком:

po::options_description options(
  "This program counts from 1 to 10.\n\nGeneric options");
person Rob Kennedy    schedule 15.11.2011
comment
Кажется, что это соответствует всем требованиям, но вы столкнетесь с проблемами при использовании описания нескольких вариантов. Но +1 тем не менее. - person rcollyer; 15.11.2011
comment
несколько проще if(vm.count("help")) напечатать отдельную строку, содержащую отформатированное использование + краткий обзор, прежде чем писать сами параметры. - person TemplateRex; 22.10.2016
comment
Это именно то, что уже показано в вопросе @Template. Я не уверен, что это проще, как вы говорите; похоже, примерно одинаковый объем работы в любом случае. - person Rob Kennedy; 23.10.2016
comment
Я предпочитаю std::cout << usage << options << '\n' << synopsis << '\n';, где options — это объект po::options_description, а usage и synopsisstd::string. Преимущество заключается в большем контроле над отступами. Кроме того, в большинстве утилит Unix синопсис идет после описания опций, и в противном случае его трудно добавить. - person TemplateRex; 23.10.2016