
Makefile с нуля: targets, .PHONY и автоматические переменные
make — не только для C. По сути это раннер задач с зависимостями: target пересобирается, только если изменился хоть один файл, от которого он зависит. Для команд без файла-результата (test, deploy, clean) нужен .PHONY — иначе make однажды решит, что цель уже “собрана”, просто увидев файл с таким же именем в директории. .PHONY: build test deploy clean build: main.o utils.o gcc -o app $^ # $^ — все зависимости main.o: main.c gcc -c $< -o $@ # $< зависимость, $@ цель test: build ./run_tests.sh deploy: test scp app prod:/opt/app/ $@/$</$^ убирают дублирование имён файлов. deploy: test гарантирует: сначала тесты, потом бинарник на прод. ...
