go build with version
# Makefile to build the command lines and tests in this project.
# This Makefile doesn't consider Windows Environment. If you use it in Windows, please be careful.
SHELL := /bin/bash
#BASEDIR = $(shell pwd)
BASEDIR = $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
# add following lines before go build!
versionDir = github.com/xwi88/version
gitBranch = $(shell git symbolic-ref --short -q HEAD)
ifeq ($(gitBranch),)
gitTag = $(shell git describe --always --tags --abbrev=0)
endif
buildTime = $(shell date "+%FT%T%z")
gitCommit = $(shell git rev-parse HEAD)
gitTreeState = $(shell if git status|grep -q 'clean';then echo clean; else echo dirty; fi)
# -ldflags flags accept a space-separated list of arguments to pass to an underlying tool during the build.
ldflags="-X ${versionDir}.gitBranch=${gitBranch} -X ${versionDir}.gitTag=${gitTag} \
-X ${versionDir}.buildTime=${buildTime} -X ${versionDir}.gitCommit=${gitCommit} \
-X ${versionDir}.gitTreeState=${gitTreeState}"
go build -ldflags ${ldflags}