Makefile

Создание 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+ параметров это не файлы, и они всегда новее исходнных

псевдопеременные

адресуют части заголовка правила:

$@ имя целевого файла (вся левая часть правила)

$^ вся правая часть правила: все файлы через пробел

$? только изменённые файлы в правой части (зависимось только по дате файла)