gflagsとは
Googleが作った引数解析用のライブラリ。
Visual Studioで使おうとすると、意外と苦労したのでメモ。
gflagsのビルド
CMakeを使って、Visual Studioのプロジェクトを生成します。
git clone https://github.com/gflags/gflags.git
cd gflags && mkdir vs && cd vs
cmake -DCMAKE_BUILD_TYPE=Release -A x64 ..
gflags.sln
を開けば、ビルドできるが、重要なのは、gflags_static.vcxproj
だ。
gflagsを参照するプロジェクトの作成
サンプル
gflagsを用いた以下のmain.cpp
をビルドしたいとする。
#include <iostream>
#include "gflags/gflags.h"
DEFINE_string(message, "Hello world!", "Message to print");
int main(int argc, char *argv[])
{
gflags::SetUsageMessage("How To Use");
gflags::SetVersionString("1.0.0");
gflags::ParseCommandLineFlags(&argc, &argv, true);
std::cout << FLAGS_message << std::endl;
gflags::ShutDownCommandLineFlags();
return 0;
}
プロジェクトの設定
- インクルードディレクトリの設定(
vs\include
) - 追加のライブラリディレクトリ(
vs\lib\Release
) - 追加の依存ファイル(
gflags_static.lib
,shlwapi.lib
) - ランタイムライブラリの設定(
マルチスレッド(/MT)
) - 上記の
gflags
のプロジェクトを参照に追加する
3のshlwapi.lib
が必要というところが難しかった。
これはWindowsのAPIで、__imp_PathMatchSpecA
のリンクに必要らしい(参考ページ)。