C ++ 11及以后的命令行参数解析器易于使用,仅组成标题。
| 获得 | |
| 执照 | |
| 标准 | |
| 统计 | |
| 测试 |
根据Boost软件许可证(版本1.0)分发。 (请参阅随附的文件许可证.txt或在http://www.boost.org/license_1_0.txt上复制
标头仅没有外部依赖项(除了std库除外)。
定义界面一次以进行解析,键入转换和使用字符串,没有冗余。
构成。每个opt或arg是一个独立的解析器。将它们结合起来生成复合解析器 - 这可以在多个函数调用的各个阶段或什至项目中完成。
将解析器直接绑定到将接收分析结果的变量 - 不必担心中间字典。
或者还可以将解析器与兰伯达(Lambdas)结合起来,以进行更多的自定义处理。
从界变量或lambdas中推论类型,并执行类型转换(通过ostream << ),并在幕后进行错误处理。
将解析器与可以具有多个值的args的向量结合。
使用结果类型进行错误传播,而不是异常(尚未在禁用异常时构建,但这将在以后进行)
型号的简短和长时间行为的POSIX标准。
可自定义的选项语法。
指定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指定了以短仪表( - )或长仪表( -- )开头的选项。选项可以是参数(例如-w 42 ),在这种情况下, opt会采用第二个参数 - 提示,或者它们是纯标志(例如-d ),在这种情况下, opt只有一个参数 - 必须是布尔值。选项名称以一组或多组方括号提供,并且可以在括号中提供描述字符串。 opt的第一个参数是可以使用std::ostream从字符串转换的任何类型的任何变量,本地,全局成员。
arg指定没有与选项相关的参数,因此没有方括号名称。否则,它们像opt一样工作。
可以通过将解析器插入流中来获得用法字符串。用法字符串是根据提供的信息构建的。
为了方便起见,可以使用help解析器指定标准帮助选项( -h , --help和-? ),这只需要布尔值即可绑定。
有一个由源文件生成的单头版本。您可以在data/single_include/lyra/lyra.hpp上找到它。一些警告:
这不是使用库的首选方法。
它没有经过彻底的测试。
它旨在用于编译器资源管理器等用例。它可以立即进行实验。
支持它不会成为优先事项。
因此,更喜欢在项目中使用常规的多文件资源。
有关更多信息和文档,请参阅网站。