WebRTC ライブラリの Windowsでのビルド成功するまで

# 初めに
グダグダ書きましたが、面倒な方は一番最後の[まとめ](#まとめ)まで飛んでください。
今回は実際に必要なものを調べる目的もあるためOSをクリーンインストールした状態で行いました。
ビルド成功するまでトライ&エラー形式で何が必要かを調べていきます。

# リポジトリのクローン
いきなり手抜きですが、
[WonderMediaProductions/webrtc-build](https://github.com/WonderMediaProductions/webrtc-build)
のリポジトリはビルドを行うバッチファイルを作成しているためこのバッチファイルを利用することにします。
ただ、OSをクリーンインストールした状態ですので、GitHubでリポジトリページに行き.zipでDLすることにしました。
.zipをDLしたら適当なフォルダに解凍します。

# とりあえずいきなりwindows_build.batを実行してみる
とりあえずwindows_build.batをダブルクリックして実行してみると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17554/05febbf3-6fff-c1a7-3408-e7fd59819d8e.png)
というダイアログが表示されそのままでは実行できません。詳細情報リンクをクリックして、「実行」ボタンをクリックして実行します。

なんかいきなり

```
・・・このシステムではスクリプトの実行が無効になっているためｘｘｘを読み込むことができません。・・・
```
というエラーが出ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17554/c1097533-fc3e-916f-1ae0-39d937df0228.png)
ググると、PowerShellのスクリプト実行ポリシーというのがデフォルトで無効になっているのが原因だそうで、PowerShellを管理者権限で実行し、

```
Set-ExecutionPolicy RemoteSigned
```
というコマンドを実行すれば.ps1ファイルを実行できるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17554/7dc48f64-c384-4604-0626-42cb08c649b0.png)

[参考ページ](https://eng-notebook.com/post-3192/)

ただし、.zipでダウンロードしWindowsの解凍ツールで解凍した場合、
「このファイルは他のコンピューターから取得したものです。・・・」というフラグが立っており、実行ポリシーを変更しただけでは.ps1ファイルが実行できないため、install_depot_tools.ps1ファイルを右クリックしてプロパティを選択して下にある「許可する」にチェックを入れていったん「適用」ボタンをクリックした後に「OK」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17554/01a86da0-1d4a-aa7a-4b41-b54987f45e54.png)

スクリプトの実行ポリシーの設定したら、再度windows_build.batを実行してみると、

```
Exception: Visual Studio Version 2017 (from GYP_MSVS_VERSION) not found.
```
というエラーになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17554/665c29ae-88e5-bf30-106f-c9c10631490f.png)


# VS2019 Community (16.0.2)をインストール(ダメ)
windows_build.batファイルの冒頭に

```
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
```
という記述があります。この環境変数を0に設定することが何を意味しているのかググってみるとよく見る説明が
「ローカルにインストールされているバージョンのVSを使用するようにdepot_toolsに知らせます 」
となっており、そしたらVS2019でもビルドできるのではと予想します。
VS2019のインストーラーをDLして実行し、"C++ によるデスクトップ開発"にチェックを入れて「インストール」ボタンをクリックします。
(プログレス表示のときに「インストール後に起動する」にチェックが入ってますがこのチェックは外します)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17554/97b1e4cb-c4ce-d9cc-cbdd-a910f9e5b331.png)

インストールが終わったら、再度windows_build.batを実行してみます。
インストール前と同じエラーとなり、VS2019だとどうやらダメっぽいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17554/10dddac9-d123-e282-edbe-520bc77ede24.png)

# VS2017 Community (15.9.11)をインストール
あきらめて、VS2017 CommunityのインストーラーをDL、起動し「C++ によるデスクトップ開発」にチェックを入れて「インストール」ボタンをクリックします。
(プログレス表示のときに「インストール後に起動する」にチェックが入ってますがこのチェックは外します)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17554/74e5444f-d749-9f11-76f4-5df851a18af0.png)

インストールが終わったら、再度windows_build.batを実行してみます。
今度は、

```
Exception: dbghelp.dll not found in "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\dbghelp.dll"
You must install the "Debugging Tools for Windows" feature from the Windows 10 SDK.
```
というエラーに変わり、一応VS2017で問題なさそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17554/a5d5ba3e-5fa3-2e2f-0970-58123c35df81.png)

# Debugging Toos for Windowsをインストール
[インストーラーダウンロードページ](https://developer.microsoft.com/ja-jp/windows/downloads/windows-10-sdk)
上のリンクにアクセスし、「インストーラーをダウンロードする＞」ボタンをクリックしてダウンロードしたら、実行する。
まず初めにインストール先が聞かれるのでデフォルトのままで(C:\Program Files\Windows Kits\10\)そのまま「Next」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17554/41c46d20-1dfc-22dc-2d3c-dcff1489ed29.png)
次に、使用状況データを送信するかといった内容のダイアログが表示されるので、こちらはYes/Noどちらか好きなほうを選択して「Next」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17554/7482853e-59d7-3ebc-e32d-1200b5711782.png)
次にライセンス契約についてのダイアログが表示されるので「Accept」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17554/6b59de1c-d8d9-23e1-ba42-437e42748dda.png)
インストールコンポーネント選択ダイアログに移り、すでに全コンポーネントが選択されている状態になっているので、そのまま「Install」ボタンをクリックしても問題ないと思いますが、今回必要なのは「Debugging Tools for Windows」なのでこれだけにチェックが入った状態にして「Install」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17554/66f87776-579a-756a-7a81-c7f4dc3e313b.png)

インストールしたら、再度windows_build.batを実行してみます。
これでようやくビルドが成功しました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17554/f40aeb60-62bd-e889-0f6c-56a0841969b9.png)

# c:\wcフォルダ
ビルド結果は、c:\wcフォルダにできるとのことで、中を見てみると

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17554/2b3f4258-72af-79ff-4f2a-d7b890e28667.png)
あれ？windows_msvc_release_x64フォルダがない。。。

* windows_msvc_debug_x64
* windows_msvc_release_x64

の2つができるはずなのですが、なぜかwindows_msvc_release_x64がない場合があります。その時は再度windows_build.batを実行してください。

# まとめ
まとめると

* VS2017のC++によるデスクトップ開発をインストール(VS2019ではダメっぽい。)
* (WindowsSDK内の)Debugging Tools for Windowsをインストール
* windows_build.batを実行

ということになります。
どなたかVS2019でもビルドが通る方法をご存知の方がいらっしゃれば教えていただきたいです。