# Blockly GCC JS/C Highlight

JavaScript の Generator を使って C++ を生成するハイライトサンプルプロジェクトです。

実行ボタンを押すと、Blockly から生成した C++ コードを一時ディレクトリに保存し、コンパイルして、実行ファイルを実行します。

一時ディレクトリは `--mode=production` を指定した場合は OS 固有のディレクトリ/cq-interface-blockly になります。未指定の場合は `tmp` ディレクトリになります。

一時ディレクトリはアプリケーション終了時に削除されます。

## 実行環境

GCC (g++) が実行可能な環境上で実行して下さい。

環境変数 `CXX` を指定することで変更可能です。

## 初期化

```sh
yarn
```

## コンパイル

```sh
yarn compile
yarn compile --mode=production
```

## 実行

```sh
yarn start
```

## パッケージ化

Windows 用の例は以下です。dist ディレクトリに出力されます。

詳細は [electron-builder の公式ドキュメント](https://www.electron.build/)を参照して下さい。

```sh
yarn compile --mode=production
yarn electron-builder --win --x64
```

## ディレクトリ構成

ディレクトリと主要なファイル構成は以下の様になっています。

```txt
├─ app/ : Electronで実行するJavaScriptやHTMLファイル
├─ src/ : TypeScriptの開発ディレクトリ
│   ├─ common/ : main, preload, renderer共通
│   ├─ main/
│   │   ├─ main.ts
│   │   └─ tsconfig.json
│   ├─ preload/
│   │   ├─ preload.ts
│   │   └─ tsconfig.json
│   ├─ renderer/
│   │   ├─ @types/
│   │   │   └─ global.d.ts
│   │   ├─ blocks/ : ブロック定義
│   │   ├─ generators/ : Blockly→C++変換
│   │   ├─ renderer.ts
│   │   └─ tsconfig.json
│   └─ tsconfig.base.json : tsconfig.jsonの共通設定
├─ package.json
└─ webpack.config.js
```
