# VSCode での利用

VSCode では、コード解釈 ([IntelliSense](https://code.visualstudio.com/docs/editor/intellisense)) 機能があるため、コード編集が効率的に行えます。またタスク機能により[ビルドコマンド](https://sdk.twelite.info/twelite-sdk-howto/komandoraindenobirudo)の実行を VSCode から行うことができます。

## プロジェクトを開く

TWELITE のアプリをビルドするためにプロジェクトを Visual Studio Code で開く必要があります。\
プロジェクトを開く手順は下記の通りです。

![メニューバーの "ファイル" → "フォルダーを開く"を選択します。](https://2381872165-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LApFq98GrqkjGMpByJw%2F-LCCZplB_DEmyzAghqDY%2F-LCCZy_dzy2xm29c_vKO%2Fimage.png?alt=media\&token=f7a7ec8e-369e-46cd-bfb7-17d3c0332758)

![開きたいプリジェクトのフォルダを選択します。](https://2381872165-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LApFq98GrqkjGMpByJw%2F-LCCZplB_DEmyzAghqDY%2F-LCC_2taPfeK9bYIJnVu%2Fimage.png?alt=media\&token=ba6a5570-8611-44c5-a04e-9142a7e1bf46)

![エクスプローラー上に開いたプロジェクトのフォルダが追加されます。](https://2381872165-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LApFq98GrqkjGMpByJw%2F-LCCZplB_DEmyzAghqDY%2F-LCC_HPSeQFQNUzXFWLE%2Fimage.png?alt=media\&token=a729cb34-8840-4961-9d0f-b608aeb78100)

## アプリをビルドする

アプリのビルドは下記の手順で行います。VSCode 上から make ユーティリティを実行しています。make の詳細については「[ビルド方法](https://sdk.twelite.info/twelite-sdk-howto/komandoraindenobirudo)」や「[Makefileについて](https://sdk.twelite.info/twelite-sdk-howto/birudonitsuite/makefile-nitsuite)」を参照してください。

例えば、超簡単！TWELITE標準アプリをビルドする場合、VSCode のタスク”Build App\_Twelite\_Master (BLUE)” を選択します。

![メニューバーの”タスク” → ”タスクの実行” を選択します。](https://2381872165-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LApFq98GrqkjGMpByJw%2F-LCCZplB_DEmyzAghqDY%2F-LCC_elt3CiSmEEmAQpr%2Fimage.png?alt=media\&token=7f0d0a3f-3362-47e3-b1f2-aec9da681957)

![右図の赤枠内よりビルドしたい定義を選択します。](https://2381872165-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LApFq98GrqkjGMpByJw%2F-LCCZplB_DEmyzAghqDY%2F-LCC_hGwxpDY6YrTZx9V%2Fimage.png?alt=media\&token=43ae2ec9-87a9-44cc-bb92-5c0b81c3a340)

![ターミナルより右図の赤枠内のような出力がされればビルド成功です。](https://2381872165-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LApFq98GrqkjGMpByJw%2F-LCCZplB_DEmyzAghqDY%2F-LCC_lXN8is14R7YYyQc%2Fimage.png?alt=media\&token=14de5b7a-0ccb-4eb5-a6eb-1be25852cbba)

{% hint style="info" %}
VSCode からはコマンドラインの make を実行しているため、エラー等もコマンドラインのエラーメッセージが出力されます。
{% endhint %}

## コード解釈を切り替える

TWELITE BLUE 用のコード解釈と TWELITE RED 用のコード解釈を切り替えることができます。 コード解釈を切り替えるには図の示す場所をクリックして開発対象にあった TWELITE のモデルを選択してください。

{% hint style="info" %}
TWELITE モジュールの種別ごとに特有の C 定義を切り替えます。

コード解釈とコンパイラ解釈が完全に一致することを保証するわけではありません。またヘッダファイルの記述などにより一部解釈できない定義も発生します。
{% endhint %}

![コード解釈を切り替えます。](https://2381872165-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LApFq98GrqkjGMpByJw%2F-LCCZplB_DEmyzAghqDY%2F-LCC_VYXk1QBc06tmr26%2Fimage.png?alt=media\&token=0fbda409-e4b3-4655-a57a-89c4495c4643)

{% hint style="info" %}
TWELITE モジュールの種別ごとに特有の C 定義を切り替えます。
{% endhint %}

{% hint style="warning" %}
コード解釈とコンパイラ解釈が完全に一致することを保証するわけではありません。またヘッダファイルの記述などにより一部解釈できない定義も発生します。

読み込むヘッダファイルは、コンパイラやライブラリのヘッダファイルを直接参照するわけではなく {SDKフォルダ}/Tools/VSCode/include　以下のコピーを参照します。
{% endhint %}

## JSON ファイルについて

上記のビルドやコード解釈については JSON ファイルに定義があります。

### .vscode/c\_cpp\_properties.json

ビルド時の暗黙定義などの定義やインクルードフォルダの指定を行っています。

追加の定義が必要な場合は、すでにあるファイル中の `"name" : "TWELITE_BLUE"` または `"name" : "TWELITE_RED"`\_ \_のエントリを複製または編集して使用します。

編集が必要になるのは `"name"` `"includePath"` などです。 特有のビルド定義が必要な場合は `"defines"` にエントリを追加します。

### .vscode/tasks.json

ビルドタスクの定義を行なっています。

新たにビルド定義を追加する場合は、すでにあるエントリをコピーして編集します。各ビルドタスクには windows, linux, osx 用のエントリーがあります。

編集が必要になるのは `"label"` `"options" の "cwd"` などです。

```bash
"tasks": [
{ 
  "label": "Build Samp_PingPong,PingPong (BLUE)",
  "type": "shell",
  ..
  "windows": {
     "command": "make",
     "args": [ "TWELITE=BLUE",  "clean", "all" ],
     "options": { "env": { "PATH": "${workspaceRoot}\\..\\..\\Tools\\MinGW\\msys\\1.0\\bin" } }
  },
  "problemMatcher": { "base": "$gcc", "fileLocation": [ "absolute" ] },
  "options": { "cwd": "${workspaceRoot}/PingPong/Build" }
},
..
```

{% hint style="info" %}

* `"options": { "cwd" ... }` の設定でビルドフォルダを指定しています。
* make 引数を追加したい場合は、\_ *`"args"`* \_の `TWELITE=???"` の後にエントリを追加します。
  {% endhint %}

#### 既存のビルドタスクに設定する

以下の例のように`group": { "kind": "build", "isDefault": true }` を追加します。そのタスクがデフォルトのビルド定義になり、\[タスク]>\[ビルドタスクの実行] やショートカットキーによる実行ができるようになります。

```bash
"tasks": [
{ 
  "label": "Build Samp_PingPong,PingPong (BLUE)",
  "type": "shell",
  ..
  "options": { "cwd": "${workspaceRoot}/PingPong/Build"},
  "group": { "kind": "build", "isDefault": true }
},
..
```
