Создание Makefile
по умолчанию
VAR = some
назначение значения переменной
OPT ?= value
назначение переменной если она еще не определена
OTHER = $(VAR) used
использование переменной
правило — блок, состоящий из заголовка и необязательного тела
заголовок — целевой файл(ы) <двоеточие> [исходные файлы]
тело — 0+ строк SHELL-команд, обязательно отбитых слева символом табуляции
.PHONY: all
all: $(MODULE) command line parameters
<tab>$^
$(MODULE).exe: $(MODULE).c $(MODULE).h
<tab>$(CC) $(CFLAGS) -o $@ $<
.PHONY
указывает что 1+ параметров это не файлы, и они всегда новее исходнных
адресуют части заголовка правила:
$@
имя целевого файла (вся левая часть правила)
$^
вся правая часть правила: все файлы через пробел
$?
только изменённые файлы в правой части (зависимось только по дате файла)