EMZETT.
Увійти

Основи 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. Див. залежності та бібліотеки.

Див. також: відтворювані збірки