2017-02-06 3 views
1

Я хотел был бы иметь возможность создать псевдонимы варианта с boost::program_options, который хранит их аргументы под тем же ключом/меткой.Как создать альтернативные псевдонимы с boost :: program_options?

Архитектура моего программного обеспечения использует различные специализированные парсеры в зависимости от значения argv[1]. Однако некоторые параметры доступны, например, мой вариант --inputs.

inputOptions.add_options() 
     ("--inputs", 
     po::value< std::vector<std::string> >()->value_name("paths"), 
     "List of files to edit.\n"); 

Для совместимости с более старой версии программы, я хотел бы добавить к одному из суб-анализаторами вариант --input совместимости, который сохраняет свой аргумент (ы) в разделе «--inputs». В идеале этот параметр должен принимать не более одного аргумента, а не сколь угодно много. Однако, если вы предоставляете решение, которое делает --input идентичным --inputs, я думаю, это тоже нормально, так как в этом случае позиционные параметры отправляются на «-inputs» в любом случае.

Благодарим за помощь!

+2

с верхней части головы. Думаю, вам придется сделать ручную проверку после того, как магазин/сообщит к сожалению. –

+0

Хм, это неудобно. Я желал что-то так же просто, как опция «target» в «argparse» python ... Спасибо. –

ответ

1

Вы пытались использовать форму po::value<...>(&variable)? Значение опции сохраняется непосредственно в переменной после разбора. Затем вы можете добавить два варианта: --input и --inputs, указывающие на одну и ту же переменную. Кроме того, вам, вероятно, придется проверить, что используется только один из двух параметров, а в противном случае - сообщение об ошибке.

Надеюсь, я правильно понял ваш вопрос.

+0

Спасибо за предложение. Однако переменные_map выкидываются во многих местах кода, поэтому и вы на самом деле не применимы для меня. однако, если я когда-либо реорганизую код, я могу использовать его. –

Смежные вопросы