-
-
Save xeoncross/3a770010865d7e9d30d0be601cd5c3be to your computer and use it in GitHub Desktop.
Sample Go Makefile to build binaries for Windows, Mac, and Linux.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
EXECUTABLE=executable-name | |
WINDOWS=$(EXECUTABLE)_windows_amd64.exe | |
LINUX=$(EXECUTABLE)_linux_amd64 | |
DARWIN=$(EXECUTABLE)_darwin_amd64 | |
VERSION=$(shell git describe --tags --always --long --dirty) | |
.PHONY: all test clean | |
all: test build ## Build and run tests | |
test: ## Run unit tests | |
go test ./... | |
build: windows linux darwin ## Build binaries | |
@echo version: $(VERSION) | |
windows: $(WINDOWS) ## Build for Windows | |
linux: $(LINUX) ## Build for Linux | |
darwin: $(DARWIN) ## Build for Darwin (macOS) | |
$(WINDOWS): | |
env GOOS=windows GOARCH=amd64 go build -i -v -o $(WINDOWS) -ldflags="-s -w -X main.version=$(VERSION)" ./cmd/service/main.go | |
$(LINUX): | |
env GOOS=linux GOARCH=amd64 go build -i -v -o $(LINUX) -ldflags="-s -w -X main.version=$(VERSION)" ./cmd/service/main.go | |
$(DARWIN): | |
env GOOS=darwin GOARCH=amd64 go build -i -v -o $(DARWIN) -ldflags="-s -w -X main.version=$(VERSION)" ./cmd/service/main.go | |
clean: ## Remove previous build | |
rm -f $(WINDOWS) $(LINUX) $(DARWIN) | |
help: ## Display available commands | |
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment