eclipseでGo言語書きたい。そして GAEにデプロイしたい。
普通にgoclipseの設定すると、appengine以下のパッケージを認識できずエラーになり、コード補完も効きません。
Projectの”Build Automatically” を On にしていると保存するたびに怒られます。
以下 windows でのお話しですが、LinuxとかOSXでも事情は同じだと思いますです。
Goを C:\Go に、 Google App Engine SDK for Go を C:\go-appengine にインストールされているものとします。
また、Goのワークスペースは C:\Users\masakano\go にしてあります。
これを書いている時点で SDK のバージョンは 1.9.26、Go は 1.4.2 です。
GOROOTの設定
SDK の昔のバージョンだと、C:\go-appengine\goroot に go.exe があったりして、
環境変数 GOROOT を C:\go-appengine\goroot に 設定してやればよかった、らしいんですけど、
go.exe じゃなくて goapp.exe になってるし、それをコピーして go.exe にしてもダメです。
なのでこの方法はあきらめて、おとなしく Goをインストールした場所に設定しときます。
Window → Preferences → Go → GOROOT → “C:\Go”
GOPATHの設定
まず、C:\go-appengine\goroot を コピーします。
ここでは、C:\Users\masakano\go_appengine にコピーしたものとします。
環境変数GOPATHの内容をそのまま使う的なチェックがありますが これを外し、いつものGoのワークスペースに続けて 先ほどコピーした C:\Users\masakano\go_appengine をセミコロン (Linuxの場合コロン)で区切って入力します。
Window → Preferences → Go → GOPATH → “C:\Users\masakano\go;C:\Users\masakano\go_appengine”
GOPATHは複数指定できるんですねー。
GAEのパッケージのビルドは C:\Users\masakano\go_appengine の中でやってくれます。
これで コード補完がきくようになります。
※注意
SDKの中にある goroot をコピーせずに GOPATH に加えてしまうと、その中でビルドが行われて、普通のGoツールの生成物が SDKの中に作られてしまいます。
結果として、いざテストしようと “goapp serve” とかやった時にビルドに失敗して動きません。
もしやっちゃった場合、
C:\go-appengine\goroot\pkg\windows_amd64 と
C:\go-appengine\goroot\pkg\windows_amd64_appengine
があると思うので、 “_appengine” がついていないほうを消してくださいです。