$@, the current target $< the first pre-requisite $^ all the pre-requisites $* the prefix shared by target and dependent files # Shell invocation VAR= $(shell pwd) # printing warnings $(warn Warning: foo!) and $(error foo) # Invoking the same make as yourself @make # functions define say @echo "Curent value of \$\@ is $@\n" endef blah: $(say) # Targets that don't produce a file. .PHONY: clean clean: rm *.o temp # stuff $(subst search,replace,$@) $(addprefix -I,$(include_dirs))