Last active
June 18, 2016 19:37
-
-
Save heewa/0562f16846aefda88225 to your computer and use it in GitHub Desktop.
gomake - sharable golang makefile
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
# Makefile to build Golang projects that can be used without putting the | |
# makefile in the project directory. Using make to build & run go projects | |
# allows you to reuse build output when files haven't changed, considering | |
# building go can be slow. | |
# | |
# Based On: https://ariejan.net/2015/10/03/a-makefile-for-golang-cli-tools/ | |
# | |
# By default it builds main.go from the directory you're in, to a binary | |
# called main. To amke it easier to use, set bash aliases & functions: | |
# | |
# alias gomake='make -f /path/to/Makefile' | |
# gorun() { gomake RUN_ARGS="$*" run ;} | |
# | |
# Then you can use like `gomake clean all` or `gorun args to your program` | |
# Project vars - You can override these with the below vars directly when | |
# calling make `BINARY=myproject make`, or `make BINARY=myproject`, or modify | |
# this file. But it's probably best to set them using aliases. | |
SOURCEDIR ?= $(shell pwd) | |
MAIN ?= main.go | |
BINARY ?= /tmp/gorun--$(notdir $(basename $(MAIN))) | |
BUILD_FLAGS ?= | |
RUN_ARGS ?= | |
# Auto vars - you shouldn't need to modify these | |
SOURCES := $(shell find $(SOURCEDIR) -name '*.go') | |
all: $(BINARY) | |
run: $(BINARY) $(SOURCES) | |
@$(BINARY) $(RUN_ARGS) | |
$(BINARY): $(SOURCES) | |
go build ${BUILD_FLAGS} -o $@ ${MAIN} | |
.PHONY: clean list | |
list: | |
@echo MAIN:${MAIN} | |
@echo BINARY:${BINARY} | |
@echo BUILD_FLAGS:${BUILD_FLAGS} | |
@echo SOURCES:${SOURCES} | |
clean: | |
if [ -f ${BINARY} ] ; then rm ${BINARY} ; fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment