2016年11月7日月曜日

GOLANG@VS.CODE自分用メモ

GOPATHの設定をどうするか的な話。
プロジェクトごとにルートパスが違うのでシステムに単一のGOPATHだと
いやだなぁと思っていて、かと言って相対パスでローカルパッケージを
指定してもvs.codeでローカルパッケージだとインテリセンスが効かない
のも嫌だなぁというのをなんとか解決する話。

GOROOTを.bash_profileに設定する。

 export GOROOT=/usr/local/opt/go/libexec

.bash_profileにcode .とうつと起動するように仕込みを入れる。

code () {
    if [[ $# = 0 ]]
    then
GOPATH=$(pwd)
        open -a "Visual Studio Code"
    else
GOPATH=$(pwd)
        [[ $1 = /* ]] && F="$1" || F="$PWD/${1#./}"
        open -n -a "Visual Studio Code" --args "$F"
    fi
}

exportしないでGOPATHをワークスペースに設定しておく。
こうすると、vs.codeで自前パッケージのインテリセンスが有効になる。

起動後に.vscode下にtasks.jsonを作る。
以下のような感じ

{
    "version": "0.1.0",
    "command": "go",
    "showOutput": "always",
    "options": {
        "env": {
            "GOPATH": "${workspaceRoot}"
        }
    },
    "tasks" :[
        {
            "taskName": "build",
            "args": ["-v"],
            "isBuildCommand": true
        },
        {
            "taskName": "run",
            "args": ["-v"]
        },
        {
            "taskName": "test",
            "args": ["-v"],
            "isTestCommand": true
        }
    ]
}

options/env下にGOPATHを${workspaceRoot}で設定しておくのがポイント。
ワークスペース以下のフォルダ構造は以下のような感じにする。

${workspaceRoot}
    /pkg/... → ここの下に.aファイルが勝手にできる
    /src/[パッケージフォルダ]
    mainパッケージのファイルはベタ置き

デメリットはgo getしたやつは個別のワークスペースに展開されるので
ファイルサイズが大きくなる。
けれど、今時ならOKOKということで。

2017/01/11 追記
src下にmain.goを置くとデバッグできないのはdleveのバグっぽいが試していない。

0 件のコメント: