LoginSignup
3
1

More than 3 years have passed since last update.

TinyGoの開発環境をVSCode向けにセットアップする

Last updated at Posted at 2020-09-27

TinyGoのVSCode向け開発環境セットアップがちょっと面倒だったので書き残し。
公式の記事はここ
TinyGoのインストール・セットアップは他記事をご参照ください。
筆者の環境 : MacBook Air (Retina, 13-inch, 2020) macOS Catalina 10.15.5

image.png

2020/09/27 追記1

.vscode/settings.json は下記TinyGo拡張機能のインストール・セットアップを行えば自動的に生成されるとのご指摘をいただきました。
なので以下settings.jsonの作成 パートはスキップしてしまって構いません。

TinyGoの設定確認

TinyGoでは本家Goとは別パスにあるGOROOT(?)を使用するようです。1
@sago35 さんよりご指摘頂き、TinyGoはmachineパッケージなどのTinyGo専用パッケージはTinyGoのROOTより解決し、それ以外のimportパスは通常のGo言語の物を使っている(GOPATHも本家Goと同じ)とのことでした。sago35さんありがとうございます!
tinygo info でTinyGo用のGOROOTのパスを確認して下さい。

$ tinygo info microbit
// 出力結果...

// LLVM triple:       armv6m-none-eabi
// GOOS:              linux
// GOARCH:            arm
// build tags:        cortexm baremetal linux arm nrf51822 nrf51 nrf microbit tinygo gc.conservative scheduler.tasks
// garbage collector: conservative
// scheduler:         tasks
// cached GOROOT:     /home/user/.cache/tinygo/goroot-go1.14-f930d5b5f36579e8cbd1c139012b3d702281417fb6bdf67303c4697195b9ef1f-syscall

cached GOROOT:... で始まる行のパスがTinyGo用GOROOTです。
build tags:... で始まる行がビルド時に使用するオプションです。

settings.jsonの作成

VSCodeの設定を直接いじっても良いのですが、通常のGoを用いた開発に影響を出したくないため、プロジェクトフォルダに.vscodeフォルダを作成しsettings.json ファイルを作成します。
その際GOROOT はそのまま貼り付けて問題ないのですが、GOFLAGSは-tags=を先頭につけ、スペースに代わりにカンマ(,) を使って区切ります。
例えば筆者の環境ではbuild tags: darwin amd64 tinygo gc.extalloc scheduler.coroutines という結果だったため、
-tags=darwin,amd64,tinygo,gc.extalloc,scheduler.coroutines となります。

settings.json
{
    "go.toolsEnvVars": {
        "GOROOT": "さっき取得したGOROOT...",
        "GOFLAGS": "-tags=avr,baremetal,linux,arm,atmega328p,atmega,avr5,arduino,tinygo,gc.conservative,scheduler.none"
    }
}

TinyGo 拡張機能のインストール

ExtensionsよりTinyGo をインストールします。
image.png

インストール後、コマンドパレットよりTinyGo targetを選択し、使っているマイコンを選択します。

image.png

筆者の場合Arduino互換機のMaruduinoのため、arduinoを選択します。2

image.png

選択後、VSCodeをリロードし"machine"パッケージの自動補完が正しく効けば完了です。
image.png


  1. ビルド時にGOROOTとかGOPATHを独自のものに置き換えてビルドしている(?)ようですが詳しくはわからず... どなたかコメントでご教授いただけると幸いです。 

  2. マイコン初心者の自分にも優しくArduino選びに付き合っていただけました。marutsuさんありがとうございました...! 

3
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1