VS Code + Go : 환경변수 GOROOT 과 GOPATH
관련링크
본문
GOROOT 은 Go 를 설치한 경로
GOPATH 는 Go 의 사용자 환경 경로
정도로 보면 됩니다.
두 경로 밑으로 동일하게 bin , pkg , src 폴더가 있는데
GOROOT 의 bin 폴더에는 기본 설치된
go.exe , godoc.exe , gofmt.exe
실행 파일이 있고
GOPATH 에는 추가적으로 받은 툴 파일이 위치하게 됩니다.
(작업하면서 추가로 받아 설치하는 패키지들도 여기 밑으로 깔립니다)
go get github.com/uudashr/gopkgs/cmd/gopkgs
go get github.com/derekparker/delve/cmd/dlv
go get github.com/nsf/gocode
이 셋은 거의 고정으로 받게 되는 듯 한데
받고 나서 GOPATH 의 bin 폴더에 보면 dlv.exe , gocode.exe , gopkgs.exe 세 파일이
설치된걸 볼 수 있습니다.
Visual Studio 가 (Nuget 패키지 매니저로) 프로젝트 경로 밑에 packages 폴더에 다운로드한
외부 라이브러리들을 관리하는 것에 반해서
VS Code 는 GOPATH 밑에 pkg 폴더에다가 통으로 받아서 사용합니다. (프로젝트 구분 그런거 없이..)
프로젝트별 저장소 분리/버전관리 관점에서 보면 .. nuget 처럼 패키지 목록 정보만 들고 있다가
빌드시 자동 복구하듯 GO 도 그런식으로 (확장기능을 사용하건 스크립트를 짜넣건..) 하면
한 군데에 짬뽕으로 뒤섞여 있거나 말거나 별 상관 없을거 같아 보입니다.
(어.. 근데 방법은 있을거라 생각합니다만... 잘 모르겠습니다. 아직 VS Code 사용에 초보라 잘 모릅니다.. ;ㅅ;)
또 한가지 방법으론 받은걸 통으로 저장소에 올려버리는 거겠죠. (필요할 때만 수동으로 업데이트 시키고)
그래서 작업경로별로 따로국밥을 만들어 줄 때는 다음 처럼 해주면 됩니다.
1. 사용자 설정에서 go.gopath 값을 작업 폴더로 지정해주기
2. 작업 폴더 새로 만들 경우 (작업폴더를 프로젝트 폴더로 바라보는 관점) 터미널에서 기본 3종 셋 받아주기
go get github.com/uudashr/gopkgs/cmd/gopkgs
go get github.com/derekparker/delve/cmd/dlv
go get github.com/nsf/gocode
이렇게 하고 저장소에 밀어 올리면
프로젝트간 패키지 짬뽕되는 것 피해서 관리할 수 있겠지용 !?
ps. 추가로 터미널에도 GOPATH 설정을 위해서
terminal.integrated.shellArgs.windows 에도 값을 적어 줍니다.
ps2. Ubuntu
홈디렉토리 .bashrc 파일을 하나 복사한다음(.bashrc2 정도) GOAPTH=$PWD 를 추가
"terminal.integrated.shellArgs.linux": [
"--rcfile", "~/.bashrc2"
]
ps3.
현재 Go 최신 버전인 1.9 의 경우 윈도우에서는 디버깅이 매우 많이 느린(작업이 불가능할정도) 문제가 있습니다.
Go 자체 보단 github.com/derekparker/delve/cmd/dlv 이 패키지가 문제.
(1.10 에서는 개선될거라는 소리가 있고요.. 1.8 은 문제없습니다.)
Linux 에서는 1.9 버전에서 작업해도 빠르게 디버깅 가능합니다.