build: text_1 text_2 cat text_1 text_2 > build text_1: echo "Hello" > text_1 text_2: echo "World" > text_2 .PHONY: view clean view: $(shell [ -f build ] && cat build) clean: rm -f build text_1 text_2 .PHONY: echo echo: echo "La commande sera affichée" @echo "seul le résuiltat est affiché" VAR = "Hello" REF = $(VAR) EXP := $(VAR) .PHONY: assign assign: @echo "initial value: $(VAR)" $(eval override VAR = Bonjour) @echo "new value: $(VAR)" @echo "assign by reference \`VAR_2 = value\`: $(REF)" @echo "assign by expansion \`VAR_2 := value\`: $(EXP)" .PHONY: specific specific: text_1 text_2 build @echo "target.....$@" @echo "First dep..$<" @echo "All deps...$^" TEXT = hello world NEW_TEXT = $(subst hello, bonjour, $(TEXT)) .PHONY: subst subst: @echo $(NEW_TEXT) FILES = $(patsubst text_%,my_text_%, $(wildcard text*)) .PHONY: textfiles textfiles: build @echo "origin: $(wildcard text*)" @echo "files: $(FILES)" .PHONY: messages messages: $(info Message d'information) $(warning Message d'alerte) $(error Message d'erreur) $(info Ce message ne s'affichera pas!) EXP_FILES := $(wildcard text*) REF_FILES = $(wildcard text*) .PHONY: macro macro: clean @echo "EXP: $(EXP_FILES)" @echo "REF: $(REF_FILES)" TEST = bonjour DIST := $(shell lsb_release -i | awk -F ':\t' '{print $$2}') ifeq ($(DIST), Arch) MY_MESS := "By the Way" endif .PHONY: condition condition: ifndef MY_MESS @echo "Vous n'utilisez pas ArchLinux : $(DIST)" else @echo $(MY_MESS) endif ifeq ($(TEST), bonjour) @echo "TEST n'a pas été modifiée" else @echo 'TEST a été modifiée' endif