TinyGoのVSCode向け開発環境セットアップがちょっと面倒だったので書き残し。
公式の記事はここ。
TinyGoのインストール・セットアップは他記事をご参照ください。
筆者の環境 : MacBook Air (Retina, 13-inch, 2020) macOS Catalina 10.15.5
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
となります。
{
"go.toolsEnvVars": {
"GOROOT": "さっき取得したGOROOT...",
"GOFLAGS": "-tags=avr,baremetal,linux,arm,atmega328p,atmega,avr5,arduino,tinygo,gc.conservative,scheduler.none"
}
}
TinyGo 拡張機能のインストール
ExtensionsよりTinyGo をインストールします。
インストール後、コマンドパレットよりTinyGo target
を選択し、使っているマイコンを選択します。
筆者の場合Arduino互換機のMaruduinoのため、arduino
を選択します。2
選択後、VSCodeをリロードし"machine"パッケージの自動補完が正しく効けば完了です。