Go v1.11のMakefileのひな型
@asya_aoi1049 on Tue Jan 08 2019
3.4 min
目次
Go言語を触る機会が増えたので、Makefileを公開します。
ご注意
このMakefileは、vim-goなどのツールを使用せずに開発を行う人向けです。
使い方
Goファイルを編集後に make check
してGo の構文に直してからGitにcommitします。
# meta
NAME := ProjectName
MAIN := main.go
## used git
## VERSION := $(shell git describe --tags --addrev=0)
## REVISION := $(shell git rev-parse --short HEAD)
VERSION := v1.0.0
REVISINO := 000001
LDFLAGS := -X 'main.version=$(VERSION)' \
-X 'main.revision=$(REVISON)'
GOMOD := go.mod
GOMODEXISTS := $(shell ls | grep $(GOMOD))
SRCS := $(shell find . -type f -name '*.go')
## env
export GO111MODULE=on
## setup
setup:
ifeq ($(GOMODEXISTS),$(GOMOD))
else
go mod init
go get golang/x/tools/cmd/goimports
go get github.com/golang/lint/golint
go get github.com/Songmu/make2help/cmd/make2help
endif
## run tests
test:
@go test $(SRCS)
## lint
lint: setup
@for pkg in $$(go list ./...): do \
golint --set_exit_status $$pkg || exit $$?; \
done
## vet
vet: setup
@go tool vet $(SRCS)
## format source
fmt: setup
@goimports -W $(SRCS)
## check go source(goimports, vet, lint)
check:
@make fmt
@echo "Done! fmt"
@make vet
@echo "Done! vet"
@make lint
@echo "Done! lint"
## build
build: $(MAIN)
go build -ldflags "$(LDFLAGS)" -o bin/$(NAME) $<
## run
run: $(MAIN)
go run $<
## help
help:
@make2help $(MAKEFILE_LIST)
.PHONY: setup test lint vet fmt build run
help
日別に記事を見る