Windows 版をソースからビルドする
====================================

**HARK音響ライブラリ開発チーム向け資料**

ここでは、Windows 版HARK音響ライブラリをソースからビルドする方法について説明する。

ソースの展開
-------------

以下の操作をコンソール等で実行する

.. code-block:: bash

    > git clone https://harkdev.backlog.jp/git/LIBHARK/hark-lib.git
    > cd hark-lib
    > git checkout feature-harklib-1-0-master
    > cd hark-lib\windows

    なお、上記 cd 後のディレクトリを、以降 PROJ_HOME と表記する

eigen の準備
-------------

https://eigen.tuxfamily.org/ から、stable 版 (本ドキュメント作成時は3.3.9が最新)をダウンロードし、
``<PROJ_HOME>/hark-lib/windows``
で展開する。

``<PROJ_HOME>/hark-lib/windows/eigen-3.3.9``
などが生成されるはずである(3.3.9 の箇所は実際のバージョン番号になる)。

eigen-3.3.9 の名前を eigen に変更する。
次項で生成されるプロジェクトファイルには上記名称でパス参照が設定されているためである。

eigen のビルドとインストールを行う

.. code-block:: bash

    > cd eigen
    > mkdir build
    > cd build
    > cmake ..

fmt の準備
------------

``<PROJ_HOME>/hark-lib/extlib/fmt``
には、既にソース一式が同梱されている。

以下の手順により、fmt のビルドとインストールを行う。

.. code-block:: bash

    > cd <PROJ_HOME>/hark-lib/extlib/fmt
    > mkdir build
    > cd build
    > cmake ..
    > cmake --build . --config Debug
    > cmake --install . --config Debug

なお、上記末尾のインストール操作は、管理者権限で行う必要がある。

また、上記は Debug 版のライブラリを構築する手段である。
Release 版ライブラリを構築する場合は、 ``--config Release`` を指定する。

hark-lib プロジェクトの生成
---------------------------

.. code-block:: bash

    > cd hark-lib
    > cmake ..\..

なお、上記操作を ``cd hark-lib`` を行わずに実行した場合、既存のファイルを上書きしてしまうため注意が必要である。

以下に出力の例を示す：

.. code-block:: bash

    C:\hark-lib\hark-lib\windows>cd hark-lib

    C:\hark-lib\hark-lib\windows\hark-lib>cmake ../..
    -- Building for: Visual Studio 16 2019
    -- Selecting Windows SDK version 10.0.18362.0 to target Windows 10.0.19042.
    -- The C compiler identification is MSVC 19.28.29334.0
    -- The CXX compiler identification is MSVC 19.28.29334.0
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.28.29333/bin/Hostx64/x64/cl.exe - skipped
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.28.29333/bin/Hostx64/x64/cl.exe - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Looking for pthread.h
    -- Looking for pthread.h - not found
    -- Found Threads: TRUE
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:hark-lib/hark-lib/windows/hark-lib

VisualStudio2019 の起動
------------------------

.. code-block:: bash

    > cd ..
    > start hark-lib.sln

ビルドの実行
------------------------

VisualStudio 上で、通常のビルド方法によりサンプルプログラム HARKlibSample をビルドする

なお、上記プロジェクトファイルでは、fmt が ``C:\Program Files (x86)\FMT\lib`` にインストールされていると想定している。
fmt のインストール操作において別のディレクトリにインストールされた場合は、適宜プロジェクトファイル HARKlib を修正する。
