VisualStudio2017でdlib C++を使う(ビルド編)

# dlib について
日本で有名な画像処理ライブラリには OpenCV がありますが、 dlib という同じく画像処理に用いることができるライブラリ(実際には主に画像処理を扱う機械学習のライブラリ)があります。特定機能において OpenCV よりも高い精度を発揮したり、そもそも OpenCV にはない機能を実装していたりするため、重宝することがあります。また、 Python 用のラッパライブラリなども存在します．

Python であれば pip を使って簡単にインストールができるようですが、今回 C++/VS/Windows 10 でという環境でビルド&利用する機会があったので、備忘録として残しておきます。

# 使うもの
- Windows 10
- Visual Studio 2017
- Cmake 3.12.1
- dlib 19.15

Visual Studioは手順中に直接は出てきませんが、入っていないとビルド時に参照するファイルが足りないので必要となります。

# 手順

## Microsoft Build Tools 2015のインストール
dlib 19.5のビルドにはVisual Studio 2015に含まれていたC++ビルドツールが必要なので、公式から持ってきてインストールします。
https://visualstudio.microsoft.com/ja/vs/older-downloads/
![image.png](https://qiita-image-store.s3.amazonaws.com/0/225893/682a9328-a6db-a3be-8a1b-a9f6dae33299.png)
https://www.microsoft.com/ja-jp/download/details.aspx?id=48159
![image.png](https://qiita-image-store.s3.amazonaws.com/0/225893/d22b0834-225a-61ee-e3de-424b8df8969e.png)

インストールが完了しても、このままだとCMakeでC++コンパラが見つからなくて怒られるので、CMakeが発見できる位置にC++コンパイラ(rc.exe, rcdll.dll)をコピーしておきます。
rc.exeとrcdll.dllは`C:\Program Files(x86)\Windows Kits\10\bin\10.0.17134.0\x64`などの場所にありますのでこれを`C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin`にコピーします．10.0.17134.0のところはバージョンによって変わるので、適時対応してください。


## CMakeのインストール
1. [CMake公式](https://cmake.org/)のDownload Latest Releaseから最新バージョンのリリースファイル一覧に飛びます。![image.png](https://qiita-image-store.s3.amazonaws.com/0/225893/4ff5b003-f27a-e578-4f96-2ded1c8b2ada.png)

2.Windows win64-x64 Installerのところからインストーラのmsiファイルをダウンロードします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/225893/462f3810-447a-3bae-8c20-7f53510d3762.png)
3.インストーラーに従ってインストールします．特に変更しなくていいと思いますが，途中の環境変数についてのところは環境変数を登録するようにしておいたほうが後々便利だと思います．デフォルトだと登録しない設定になっています．

## dlibソースの準備
1. [dlib公式](http://dlib.net/)左部のから最新安定版のdlibのソースコードをダウンロードしてきます．![image.png](https://qiita-image-store.s3.amazonaws.com/0/225893/90c3570b-1de2-70f4-6371-3fecaa2c5489.png)

2. ダウンロードしたzipファイルの中にあるdlib-19.15という名前のフォルダを，C直下にコピーします．
 ![image.png](https://qiita-image-store.s3.amazonaws.com/0/225893/2c7f7ebe-77d1-12d0-e274-5965cad8d479.png)

3. `C:\dlib-19.15\examples`以下に，buildというフォルダを作成します．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/225893/e49060f1-e500-c460-b3a1-ac5b31964ea2.png)

## ビルド用ファイルの生成
CMakeを使ってビルド用ファイルを生成していきます。ここではCMakeのGUIフロントエンドを使って作業を行います。

1. CMake GUIを起動したら、先程作成したsourceとbuildフォルダのパスをそれぞれGUIに入力します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/225893/d0c5f49b-69c0-dee6-366a-4dbafd4d2831.png)

2. GUI下部のconfigureボタンを押すと、どのVisualStudioバージョンに合わせてプロジェクトを生成するか聞かれるので、`Visual Studio 14 2015 Win64`を選択してFinishを押します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/225893/c31daaec-5a1e-8119-d44e-0472f2d51311.png)
3. 画面が赤くなって物々しいですが、問題ないです。赤い部分で生成するプロジェクトの設定を行うことができます。特になければもう一度Configureボタンを押し、続けてGenerateボタンも押します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/225893/a79732ab-69df-b6a4-7bb0-15e57acb7ca0.png)


4. すると`C:\dlib-19.15\examples\build`以下にファイルが生成されるので、確認します。examplesから生成を行うのは不思議な気がしますが、[公式](http://dlib.net/compile.html)のインストール手順ではこれで正しいようで、dlib直下からビルドを行う方法は間違いだと公式の中の人が言っていました。

## ソースのビルド
1. `C:\dlib-19.15\examples\build`をエクスプローラで開き、Shiftを押しながらなにもないところで右クリックします。するとその場所でPowerShell(cmdでも可)が開けるので、PowerShellを起動してください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/225893/147427fd-cdc0-e865-2c27-8604c151fa0f.png)

2. そこで`cmake --build . --config Release`とコマンドを入力し、実行します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/225893/5b1300ab-d1b4-5f68-bc7e-05dc80cf2ea0.png)
するとビルドが実行され，`C:\dlib-19.15\examples\build\dlib\Release`に`dlib19.15.0_release_64bit_msvc1900.lib`ファイルが作成されるので，これを利用することができます。
また、実行したコマンドの`Release`部分を`Debug`に変更することでデバッグビルド用のライブラリを生成することができます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/225893/3a1c34c8-8335-5f3e-36cc-16bab646cf8a.png)

# おわり
おわりです