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上找到它。一些警告:
這不是使用庫的首選方法。
它沒有經過徹底的測試。
它旨在用於編譯器資源管理器等用例。它可以立即進行實驗。
支持它不會成為優先事項。
因此,更喜歡在項目中使用常規的多文件資源。
有關更多信息和文檔,請參閱網站。