golang - Build
아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다.
빌드
go build
-tags를 사용하여 Release/Debug를 바꾸기
디버깅/릴리스에서 기능을 바꾸고 싶은 경우 Build constrains를 사용하면 좋다.
Build Constrains는?
Build constrains는 필요에 따라서 파일을 바꾸는 Go의 기능이다.
공식 문서에 소개되고 있는 예는 아키텍처마다 빌드할 소스를 바꾸는 방법이다.
빌드 할 파일을 바꾸는 방법은 아래 3개
-
코멘트로 전환 // +build linux
이 주석을 파일의 선두에 써 두면 GOOS=linux의 경우만 빌드된다.
i386 등의 GOARCH도 태그로 사용하는 것이 가능하다. 참고로 부정은 다음과 같이 기술한다.
// +build !linux -
파일 이름으로 전환
파일 이름으로도 Build constrains를 할 수 있다.
아래의 파일은 GOOS=windows, GOARCH=amd64 환경에서만 빌드된다.
파일 이름으로 빌드 대상을 알 수 있기 때문에 개발자에게도 편하다.
source_windows_amd64.go -
build -tags로 전환
+build 후에 붙이는 심불은 태그로 불리며 go build -tags tagA 처럼 옵션으로 지정할 수 있다.
아래와 같이 주석이 있는 파일은 앞의 명령어에서만 빌드된다. // +build tagA
build -tags를 사용하여 Release/Debug 전환
3번째 방법을 쓰면 debug/release 빌드를 전환할 수 있다.
테스트 시는 localhost. 릴리스 때는 올바른 주소를 사용하고 싶은 경우 다음과 같이 2개의 파일을 기술한다.
release.go
// +build !debug
package main
const APIServer = "http://localhost:8080"
debug.go
// +build debug
package main
const APIServer = "http://www.mywebapp.com"
주의해야 할 것은 1행째 코멘트에 이어 3행째 사이에 빈 행이 필요하다.
그리고 debug 때는 아래와 같이 빌드한다.
go build -tags debug
정리
- Build constrains를 사용하면 파일 단위로 빌드를 제어할 수 있다
- go build -tags tagName 으로 원하는 태그를 지정할 수 있다
- 태그는/ / +build 로 지정한다. 주석 뒤에 빈 행을 잊지 않도록
보충 1
참고로 방법 1, 2를 같이 적용할 필요는 없고 한쪽을 한다. 파일 이름으로 바꾸는 것을 선택한다면 grep 등으로 쉽게 빌드 대상 파일을 선별할 수 있으므로 추천한다.
보충 2
기본적으로 준비되어 있는 bc는 GOOS 나 GOARCH 이외에 ignore 가 있다.
// +build ignore
라고 쓰여진 파일은 빌드 되지 않는다.
xx_source.go 에러가 많은 파일 등을 우선 무시하고 싶을 때 위처럼 하면 좋다.
크로스 컴파일 설정 값 $GOOS, $GOARCH
$GOOS $GOARCH 메모 darwin 386 Mac OS X 10.6~ darwin amd64 Mac OS X 10.6~ freebsd 386 freebsd amd64 freebsd arm linux 386 linux amd64 linux arm netbsd 386 netbsd amd64 netbsd arm openbsd 386 openbsd amd64 plan9 386 plan9 amd64 windows 386 windows amd64
$GOARCH 메모 amd64 64-bit x86 386 32-bit x86 arm 32-bit ARM
gox
이 글은 2018-09-28에 작성되었습니다.