Основы Makefile
Коротко: Makefile описывает, какие файлы из каких получаются и какими командами. make затем пересобирает только устаревшее.
Подробнее: Инструмент родом из 1970-х, но широко используется и сегодня, в том числе как простой запускатель задач для проектов на любом языке.
Подробности
- Правило:
цель: зависимостии ниже, с отступом табуляцией, команды.
program: main.o util.o
cc -o program main.o util.o
%.o: %.c
cc -c $< -o $@- Переменные:
$@(цель),$<(первая зависимость),$^(все). Свои вродеCC=gcc. - Актуальность:
makeсравнивает времена изменения. Собираются только цели с более новыми зависимостями. - .PHONY: Цели без файла, такие как
testилиclean, объявляют так, чтобы одноимённый файл их не блокировал. - Параллельно:
make -j8собирает независимые цели одновременно. - Ловушки: Пробелы вместо табуляции, каждая строка команды выполняется в отдельной оболочке.
- Альтернативы: CMake, Ninja, Just, Task. См. зависимости и библиотеки.
См. также: воспроизводимые сборки