# VS Codeでのビルド

{% hint style="danger" %}
ビルドには TWELITE STAGE を推奨します。

MWSDK2020\_12 以降、VS Code でのビルド定義については保守更新しません。
{% endhint %}

VS Code では、Act\_samplesディレクトリ直下にあるワークスペースファイルを開くか、Act\_samples以下のアクトディレクトリを開きます。

{% hint style="warning" %}
以下の例では英語インタフェースの画面例で、ワークスペースを開いています。
{% endhint %}

ワークスペースを開き `[Terminal>Run Task...]` を選択します。

![ビルドタスクの一覧表示](https://1999008143-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LtYCTXyBdW9s37EKPcS%2F-LvnXd5fNUk7v27dI_uI%2F-LvnbnyWLoG4kiJv3eba%2Fimage.png?alt=media\&token=3d5bdf19-0568-4d12-b277-867ae97ce7c0)

ビルドするTWELITE無線モジュールの種別(BLUE/RED)とアクト名を選択します。以下の例ではBuild for TWELITE BLUE PingPong (TWELITE BLUE用/PingPongアクト) を選択しています。選択後すぐにビルドが始まります。

![ビルドタスクの選択](https://1999008143-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LtYCTXyBdW9s37EKPcS%2F-LvnXd5fNUk7v27dI_uI%2F-LvncUdWIAhXZSqLQEqU%2Fimage.png?alt=media\&token=f2925f4a-2a9e-4ab3-8912-fb10f255e388)

ビルド中の経過は画面下部の TERMINAL 部分に出力されます。

![ビルド経過](https://1999008143-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LtYCTXyBdW9s37EKPcS%2F-LwLK3mQEDBzwFjN2qqC%2F-LwLL5jKS3QDHPFtNvq4%2Fimage.png?alt=media\&token=8d04e26f-effb-4940-8ea1-f967fb7d1419)

{% hint style="success" %}
正しくビルドできた場合、上記画面例の反転表示部のように .elf ファイルが生成されるメッセージがサイズ情報(`text data bss dec hex filename`と記載がある部分)とともに出力されます。

またBINファイル（上記では `PingPong_BLUE_???.bin`）ファイルがbuildディレクトリ下に出来上がっているはずです。確認してみてください。
{% endhint %}

{% hint style="info" %}
ビルド定義には Windows10 のファイルシステムに適合しないディレクトリ名 (例：`/c/User/...`)を変換する(例：`C:/User/...`) 定義を追加しています。

変換は完全ではありませんが、コンパイルメッセージからエラーが発生しているファイル名と行番号を抽出できます。

`.vscode/tasks.json` 中の実行コマンドは `sh -c "make ... | sed -E -e s#..."` のようにコマンド呼び出しすることで、出力メッセージ中のドライブ名相当部の文字列を書き換えています。

```
...
"windows": {
    "command": "sh",
    "args": [
        "-c", "make TWELITE=BLUE 2>&1 | sed -E -e s#\\(/mnt\\)?/\\([a-zA-Z]\\)/#\\\\\\2:/#g"
    ],
```

{% endhint %}

{% hint style="warning" %}
ビルドがうまくいかない場合は、まず**エラーメッセージを確認**して下さい。**errorという文字列が含まれる行**中のメッセージから、エラー原因が容易に特定できる場合も少なくありません。

念のため、クリーン(`objs_???` ディレクトリにある中間ファイルの削除)を行い、ビルドを再実行してみてください。（他の環境でビルドした中間ファイルが残っていると`make clean`を含めすべての操作が失敗します)
{% endhint %}
