golangkorea/devfest2020-golang-community-qna

Makefile을 사용하시나요?

billopark opened this issue · 5 comments

go에서는 대부분 Makefile을 주로 사용하는 것 같습니다.
저도 Makefile로 go관련 명령어 셋을 관리하고 있었는데요,
Makefile에서 실행되는 코드들은 외부 환경변수를 읽을 수 없는 형태로 실행이 되어서 GOBIN 등의 Go관련 환경변수들이 잘 안잡히더라고요. 덕분에 go로 설치한 툴들이 정상적으로 실행이 안되었습니다.
그래서 Makefile대신 다른 툴을 사용해보려고 하고 있는데요,
혹시 Makefile을 사용하고 계신지, 다른 툴을 사용하신 다면 어떤 툴을 사용하시는지 궁금합니다 :)

참고로 저는 Magefile이라는 친구를 사용하고 있습니다!

makefile이 말하자면 쉘에서 실행되는 명령어 모음인데 go build가 결국 bash에서 실행될 거기 때문에 makefile로 빌드 스크립트를 작성하는 게 제일 편하더라고요. 다른 건 시도해 보지 않았어요. make를 실행할 때 필요한 값을 인자로 넘겨 주게 하거나 ${}로 환경변수를 받아와요.

Uber에서는 최근 Google Bazel을 Build 도구로 사용하는 것에 대해서 포스팅한 글이 있는데요,
요것도 참고해주시면 좋을 것 같습니다.

makefile이 말하자면 쉘에서 실행되는 명령어 모음인데 go build가 결국 bash에서 실행될 거기 때문에 makefile로 빌드 스크립트를 작성하는 게 제일 편하더라고요. 다른 건 시도해 보지 않았어요. make를 실행할 때 필요한 값을 인자로 넘겨 주게 하거나 ${}로 환경변수를 받아와요.

bash에서 make 커멘드를 부르는거면 괜찮지만 makefile자체는 shell이 interactive mode가 아닌 환경에서 호출되는게 기본인 걸로 알고있습니다. interactive mode가 아니면 환경변수가 무시되고요.
저는 go install로 설치된 커멘드를 code generation에서 활용하는데, go install된 커멘드는 $GOBIN위치에 binary가 있어서 $GOBIN, $PATH 둘 다 넘겨줘야 하는데, 이게 영 활용성이 떨어지는 것 같습니다 ㅠ

Uber에서는 최근 Google Bazel을 Build 도구로 사용하는 것에 대해서 포스팅한 글이 있는데요,
요것도 참고해주시면 좋을 것 같습니다.

앗 참고해보겠습니다 감사합니다!