# base snippet base .PHONY: clean, mrproper CC = gcc CFLAGS = -g -Wall all: $1 %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< ${1:out}: $1.o $(CC) $(CFLAGS) -o $@ $+ clean: rm -f *.o core.* mrproper: clean rm -f $1 # add snippet add ${1:out}: $1.o $(CC) $(CFLAGS) -o $@ $+ # print snippet print print-%: ; @echo $*=$($*) # ifeq snippet if ifeq (${1:cond0}, ${2:cond1}) ${0:${VISUAL}} endif # ifeq ... else ... endif snippet ife ifeq (${1:cond0}, ${2:cond1}) ${3:${VISUAL}} else ${0} endif # else ... snippet el else ${0:${VISUAL}} # .DEFAULT_GOAL := target snippet default .DEFAULT_GOAL := ${1} # help target for self-documented Makefile snippet help help: ## Prints help for targets with comments @cat $(MAKEFILE_LIST) | grep -E '^[a-zA-Z_-]+:.*?## .*$$' | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $\$1, $\$2}' ${0}