からもダウンロードできる。そこにMIT Licenseと書いてあるのでライセンスはかなり緩い。
ビルドしなくても使えるのでその点は良いが、インクルードがヘッダファイル一つでも関連ファイルが多いので追加のインクルードディレクトリを指定しなければいけない。
#include <iostream> //https://tclap.sourceforge.net/ #include <tclap/CmdLine.h> int main(int argc, char** argv) { int val_int; std::string val_string;
// Define the command line object TCLAP::CmdLine cmd( "test program" // アプリケーションの説明 , ' ' // コマンドライン引数の区切り文字 , "0.1" // ツールのバージョン , true // -hで表示されるヘルプを作成する );
TCLAP::ValueArg<int> arg_i( "n" // 引数指定方法 -n 123 のように記述 , "number" // 引数指定方法 --number のように記述 , "count of data" // ヘルプに表示する説明 , true // 必須項目であることを示す , 0 // 初期値 , "integer" // ヘルプに表示するこのオプションのデータ型 ); cmd.add(arg_i);
TCLAP::ValueArg<std::string> arg_s( "t" // 引数指定方法 -t abc のように記述 , "text" // 引数指定方法 --text のように記述 , "text data" // ヘルプに表示する説明 , false // 必須項目であることを示す , "void" // 初期値 , "text" // ヘルプに表示するこのオプションのデータ型 ); cmd.add(arg_s);
// コマンドライン引数を解釈する cmd.parse(argc, argv); // 解釈した値を取得する val_int = arg_i.getValue(); val_string = arg_s.getValue(); // 入力されたオプションを確認 std::cout << "input : " << val_int << std::endl; std::cout << "input : " << val_string << std::endl; return 0; }
実行例1 引数を指定して実行してみる。
実行例2 ヘルプを作成しているので、-hで使い方表示ができるようになっている。
app.exe -h
USAGE:
app [-h] [--version] [-t <text>] -n <integer>
Where:
-n <integer>, --number <integer>
(required) count of data
-t <text>, --text <text>
text data
--, --ignore_rest
Ignores the rest of the labeled arguments following this flag.
--version
Displays version information and exits.
-h, --help
Displays usage information and exits.
test program