【2020年版】WindowsのC++ビルド環境をclang＋VS Build Tools 2019で作る

[fukuoka.ex](https://fukuokaex.connpass.com/)のpiacereです
ご覧いただいて、ありがとうございます :bow:

Windowsは、macやLinuxのように、C++ビルドツールが標準では入っていないため、C++で書かれたツール（たとえばElixirだと、マルチコア／GPUドライバ[「Pelemay」](https://github.com/zeam-vm/pelemay)や高速行列ライブラリ[「Matrex」](https://github.com/versilov/matrex)、暗号化ライブラリ[「Bcrypt」](https://github.com/riverrun/bcrypt_elixir)が該当）のビルドができません

そこで、「clang」と「Visual Studio Build Tools 2019」をインストールして、C++ビルド可能にする手順を解説します

内容が、面白かったり、気に入ったら、「いいね」よろしくお願いします :wink:

# 本コラムの検証環境

本コラムは、以下環境で検証しています

- Windows 10

# 「Visual Studio Build Tools 2019」のダウンロード

「Visual Studio Build Tools 2019」は、以下ページ下部にある、「Visual Studio 2019およびその他の製品」の右側、「ダウンロード」ボタンをクリックします
https://visualstudio.microsoft.com/ja/vs/older-downloads/#visual-studio-2019-and-other-products
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155423/55196b72-773c-1a54-9c2e-158b6cc5e521.png)

Microsoftアカウントでのログインを行うと、「Build Tools for Visual Studio 2019 (version 16.9)」を探し、「Download」ボタンをクリックするとダウンロードが開始します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155423/0f7ccba0-4f6d-527a-c8ac-c7d0c93bdf41.png)

# 「Visual Studio Build Tools 2019」のインストール

ダウンロードが終わり、「vs_BuildTools.exe」というファイルが入手できたら、実行すると、以下画面が出るので、「C++ Build Tools」を選択して、「インストール」ボタンをクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155423/d50d1ae9-bcc6-07e7-0fda-0a85526b8bf9.png)

インストールが開始されます（完了まで、けっこう時間がかかると思います）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155423/3ed53227-79f3-3663-0705-a1714be71ae2.png)

# nmake等のVisual Studioツールを使えるようにする

「x64 Native Tools Command Prompt for VS 2019」を起動し、ビルド対象のフォルダまでcdコマンドで移動します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155423/0c1d2e0d-6473-998f-bdf4-15a2a5eb37cc.png)

# nmakeの起動確認

新たにコマンドプロンプトを起動し、以下コマンドを入力してください

```
nmake /v
```

以下のような情報が表示されれば、インストールおよびパス設定は成功です

```
Microsoft(R) Program Maintenance Utility Version 14.28.29337.0
Copyright (C) Microsoft Corporation.  All rights reserved.

使い方:    NMAKE @コマンドファイル
        NMAKE [options] [/f makefile] [/x stderrfile] [macrodefs] [targets]

オプション:

/A 評価対象をすべてビルドします
/B タイム スタンプが等しい場合でもビルドします
/C メッセージを出力しません
/D ビルド情報を表示します
/E 環境変数をメイクファイルのマクロ定義より優先します
/ERRORREPORT:{NONE|PROMPT|QUEUE|SEND} エラーを Microsoft に報告します
/G !include ファイル名を表示します
/HELP 使い方に関する概要を表示します
/I コマンドからの終了コードを無視します
/K エラーが返されても、関連のない依存関係行をビルドします
/N コマンドの表示だけ行い、実行はしません
/NOLOGO 著作権メッセージが表示されないようにします
/P NMAKE の情報を表示します
/Q タイム スタンプはチェックしますがビルドは実行しません
/R 前に定義された推論規則とマクロを無視します
/S 実行されるコマンドを表示しません
/T タイム スタンプを変更しますがビルドを実行しません
/U インライン ファイルをダンプします
/Y バッチモードを無効にします
/? 使い方に関する概要を表示します
```

# 「clang」のダウンロード

「clang」は、以下ページ下部にある、「Pre-Built Binaries」内の「Windows (64-bit)」をクリックして、ダウンロードします

http://releases.llvm.org/download.html
[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155423/52939efc-a620-49e4-90fd-d7cefe6463d1.png)](http://releases.llvm.org/download.html)

# 「clang」のインストール

ダウンロードが終わり、「LLVM-x.x.x-win64.exe」というファイルが入手できたら、実行すると、以下画面が出るので、「次へ」で進めていけばインストールできます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155423/e43b9792-cc24-ec12-adf8-eb8c30c12a8c.png)

# なお、「Visual Studio Build Tools 2019」をインストールしないと…

Visual Studio Build Tools 2019をインストールせず、clangを動かすと、C／C++標準インクルードファイル（stdio.hやiostream.hなど）が存在しないため、ビルドが失敗するので、必ずVisual Studio Build Tools 2019をインストールしてください

# 終わり

今回、C++で書かれたツールをWindowsでビルドするために、「clang」と「Visual Studio Build Tools 2019」をインストールする手順を解説しました

Windowsは、macやLinuxと異なり、C++ビルドツールが標準では入っていないため、C++のビルドで躓きやすいのですが、今回の手順を見てお分かりの通り、わりかし簡単な手順です（ダウンロード元を見つけることが、最も難しいのかも…）ので、めげずに頑張ってみてください

ただし、時間的に厳しい方は、サクッとmac／Linuxに逃げる器用さは、頭の片隅に置いといてください

# p.s.「いいね」よろしくお願いします

ページ左上の ![image.png](https://qiita-image-store.s3.amazonaws.com/0/155423/4d515047-cc48-382e-c2b1-3ad0cc50dbbf.png) や ![image.png](https://qiita-image-store.s3.amazonaws.com/0/155423/a4e3da58-70a3-4197-95a2-6a6906650d01.png) のクリックを、どうぞよろしくお願いします:bow:
ここの数字が増えると、書き手としては「ウケている」という感覚が得られ、連載を更に進化させていくモチベーションになりますので、もっとElixirネタを見たいというあなた、私達と一緒に盛り上げてください！:tada: