【Visual Studio 2017】Boost導入方法【超易しい解説】

#はじめに
今回はVisual Studio 2017でboostの導入方法について解説していきます。

`そろそろboostに手を出してみようかな`
と思っている方や、
`Visual Studioでプログラミングしてるけどboostの入れ方がわからない`
という方に向けて書いてます。

これを見れば誰でもboostが導入できる！~~はず~~

#[ダウンロード](https://www.boost.org/users/download/)

[⇒こちらから`boost〇〇.zip` をダウンロードします。](https://www.boost.org/users/download/)

[![bo6.png](https://qiita-image-store.s3.amazonaws.com/0/213065/018dce12-b91d-4eab-9a1e-a9fc52875a7f.png)](https://www.boost.org/users/download/)
`Platform` は `windows` を選択、
`File` は [`boost〇〇.zip`](https://www.boost.org/users/download/) を選択します。

この解説では、 `boost_1_68_0.zip` を使います。

#ダウンロード後

ダウンロードした[`boost〇〇.zip`](https://www.boost.org/users/download/)を `すべて展開(解凍)` します。
今回、展開場所は `Cドライブ直下(Windows (C:))` に置きます。

![bo3.PNG](https://qiita-image-store.s3.amazonaws.com/0/213065/acc73b96-7501-0b30-7720-5e896ee49715.png)

展開はめちゃくちゃ時間がかかります。

![bo4.PNG](https://qiita-image-store.s3.amazonaws.com/0/213065/7bf6d4d9-872e-61f9-0ab5-f265aede60ae.png)

展開が終わったら次へ。

#コマンドプロンプトを起動
コマンドプロンプトを管理者権限で起動します。

`1.左下にあるWindowsアイコンをクリック` ⇒ スクロールしてWの行にある `2.Windows システムツール` ⇒ `3.コマンドプロンプトを右クリック` ⇒ `4.その他` ⇒ `5.管理者として実行` を押します。
`許可しますか？` という画面が出たら、 `はい` を選択。
~~展開に時間がかかりすぎて、その間に丁寧な解説してしまった。~~
![スクリーンショット 2018-09-04 08.28.36.png](https://qiita-image-store.s3.amazonaws.com/0/213065/9124bf3f-72a3-10ce-a26f-b6c4f17f86eb.png)

コマンドプロンプトを起動したら、
展開したフォルダのある場所、(この説明だと) `C:\boost_1_68_0` にフォルダがあるので

コマンドプロンプトで `cd C:\boost_1_68_0` と打ちます。
※ダウンロードしたboostのバージョンによって適宜、名前を変えてください。

```:コマンドプロンプトの画面
C:\WINDOWS\system32>cd C:\boost_1_68_0
C:\boost_1_68_0>
```

次に `bootstrap.bat` と打ちます。ビルドです。

```:コマンドプロンプトの画面
C:\boost_1_68_0>bootstrap.bat
Building Boost.Build engine
Bootstrapping is done. To build, run:
    .\b2
To adjust configuration, edit 'project-config.jam'.
Further information:
    - Command line help:
    .\b2 --help
    - Getting started guide:
    http://boost.org/more/getting_started/windows.html

    - Boost.Build documentation:
    http://www.boost.org/build/doc/html/index.html
C:\boost_1_68_0>
```

最後に

```:x86
b2.exe toolset=msvc-14.1 link=static runtime-link=static,shared --build-dir=build/x86 address-model=32 -j5 install --includedir=C:\boost_1_68_0\include --libdir=C:\boost_1_68_0\stage\lib\x86
```

```:x64
b2.exe toolset=msvc-14.1 link=static runtime-link=static,shared --build-dir=build/x64 address-model=64 -j5 install --includedir=C:\boost_1_68_0\include --libdir=C:\boost_1_68_0\stage\lib\x64
```

こちらの２行をコマンドプロンプトに打ちます。
※ダウンロードしたboostのバージョンによって適宜、名前を変えてください。
そうするとライブラリファイルが生成されます。

この作業はかなり時間がかかります。

これでコマンドプロンプトの役目は終わりです。

#Visual Studioでの設定

画面上のメニューの `プロジェクト(P)` から `〇〇のプロパティ` を押します。

左の `C/C++` ⇒ `全般` ⇒ `追加のインクルードディレクトリ` に下記を追加します。
※ダウンロードしたboostのバージョンによって適宜、名前を変えてください。

```
C:\boost_1_68_0\include\boost-1_68
```

左の `リンカー` ⇒ `全般` ⇒ `追加のライブラリディレクトリ` に下記のどちらかを追加します。
※ダウンロードしたboostのバージョンによって適宜、名前を変えてください。

```:x86の場合
C:\boost_1_68_0\stage\lib\x86
```

```:x64の場合
C:\boost_1_68_0\stage\lib\x64
```

今回は、コンソールのプロジェクトとして使用するので、
左の `リンカー` ⇒ `システム` ⇒ `サブシステム` を

```
コンソール (/SUBSYSTEM:CONSOLE)
```
にしましょう。

#boostが使えるかどうかのテスト1

boostのバージョンを確認してみましょう。

```cpp:Source.cpp
#include <iostream>
#include <boost/version.hpp>

int main() {
	std::cout << "boostバージョン:" << BOOST_VERSION << std::endl;
	std::cout << "boostライブラリバージョン:" << BOOST_LIB_VERSION << std::endl;
	return 0;
}
```

```:出力結果
boostバージョン:106800
boostライブラリバージョン:1_68
```

実行できました！
※ちなみにこれはライブラリファイルを入れなくても実行することが出来ます。

#boostが使えるかどうかのテスト2

今度はお遊び程度でboost.asioを使ってみましょう。
~~boost.asioとはC++の初心者でも使えると言われる機能です(大嘘)~~

```cpp:Source.hpp
#include <iostream>
#include <boost/asio.hpp>

namespace asio = boost::asio;
using asio::ip::tcp;

int main()
{
	//宣言
	asio::io_service io_service;
	tcp::socket socket(io_service);
	boost::system::error_code error;

	//接続
	socket.connect(tcp::endpoint(asio::ip::address::from_string("192.168.0.1"), 31400), error);

	//エラーかどうかチェック
	if (error) std::cout << "未接続: " << error.message() << std::endl;
	else std::cout << "接続済み" << std::endl;
}
```

```:出力結果
未接続: 対象のコンピューターによって拒否されたため、接続できませんでした。
```

実行できました！

以上、Boost導入方法でした。

##ソースコードのライセンス

These codes are licensed under CC0.
[![CC0](https://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg "CC0")](http://creativecommons.org/publicdomain/zero/1.0/deed.ja)

ソースコードは自由に使用してください。