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のリンクに必要らしい(参考ページ)。