Простая в использовании, сочинение, только заголовок, анализатор аргументов командной строки для C ++ 11 и выше.
| Получать | |
| Лицензия | |
| Стандарты | |
| Статистика | |
| Тесты |
Распространено по лицензии на программное обеспечение Boost, версия 1.0. (См. Accompaning File License.txt или копирование по адресу http://www.boost.org/license_1_0.txt)
Заголовок только без внешних зависимостей (кроме библиотеки std ).
Определите свой интерфейс один раз, чтобы пройти анализ, преобразование типа и строки использования без избыточности.
Сочинение. Каждый opt или arg является независимым анализатором. Объедините их, чтобы создать композитный анализатор - это можно сделать поэтапно для нескольких вызовов функций - или даже проектов.
Привяжите анализаторы непосредственно с переменными, которые получат результаты Parse - нет промежуточных словари, о которых нужно беспокоиться.
Или также может привязать анализаторы с лямбдами для более индивидуальной обработки.
Вычитает типы из связанных переменных или лямбды и выполняет конверсии типа (через ostream << ), с обработкой ошибок за кулисами.
Привяжите анализаторы с векторами для ARG, которые могут иметь несколько значений.
Использует типы результатов для распространения ошибок, а не исключения (еще не строится за исключением отключений, но это будет позже)
Модели POSIX Стандарты для короткого и длинного поведения OPT.
Настраиваемый вариант синтаксис.
Укажите кардинальность arg -s от одного ко многим.
Предельные значения опции на указанный набор значений.
Рекурсивные аргументные группы с обратным вызовом для обнаружения. Это обеспечивает простые и общие спецификации субкоммонд.
Использовать, просто #include <lyra/lyra.hpp>
Стоашкователь для одного варианта может быть создан таким образом:
int width = 0 ;
auto cli = lyra::cli()
| lyra::opt( width, " width " )
[ " -w " ][ " --width " ]
( " How wide should it be? " );Вы можете использовать этот анализатор напрямую, как это:
auto result = cli.parse( { argc, argv } );
if ( !result )
{
std::cerr << " Error in command line: " << result. message () << std::endl;
exit ( 1 );
}
// Everything was ok, width will have a value if supplied on command line.Обратите внимание, что исключения не используются для обработки ошибок.
Вы можете комбинировать анализаторы, составляя с | , так:
int width = 0 ;
std::string name;
bool doIt = false ;
std::string command;
auto cli
= lyra::opt( width, " width " )
[ " -w " ][ " --width " ]
( " How wide should it be? " )
| lyra::opt( name, " name " )
[ " -n " ][ " --name " ]
( " By what name should I be known " )
| lyra::opt( doIt )
[ " -d " ][ " --doit " ]
( " Do the thing " )
| lyra::arg( command, " command " )
( " which command to run " ); opt Определяет параметры, которые начинаются с короткой приборной ( - ) или Long Dash ( -- ). Варианты могут быть аргументами (например, -w 42 ), и в этом случае opt берет второй аргумент -намек или это чистые флаги (такие как -d ), и в этом случае у opt есть только один аргумент, который должен быть логическим. Имена опций представлены в одном или нескольких наборах квадратных кронштейнов, а строка описания может быть предоставлена в скобках. Первым аргументом в opt является любая переменная, локальный, глобальный член, любого типа, который может быть преобразован из строки с использованием std::ostream .
arg указывает аргументы, которые не привязаны к опциям, и поэтому не имеют квадратных имен кронштейнов. В противном случае они работают так же, как opt .
Строка использования может быть получена путем вставки анализатора в поток. Строка использования построена из предоставленной информации.
В качестве удобства, стандартные варианты справки ( -h , --help и -? ) Могут быть указаны с использованием анализатора help , который просто требует логического, к которому можно привязать.
Существует версия с одним заголовком, которая генерируется из исходных файлов. Вы можете найти его в data/single_include/lyra/lyra.hpp . Некоторые предостережения для этого:
Это не предпочтительный метод использования библиотеки.
Это не тщательно протестировано.
Он предназначен для вариантов использования, таких как компилятор. Explorer. Где это допускает немедленные эксперименты.
Поддержка этого не будет приоритетом.
Следовательно, предпочитаю использовать обычные многофильные источники в ваших проектах.
Для получения дополнительной информации и документации см. Веб -сайт.