>_ IzzyLab

Практическое задание

Шаблонное правило и автопеременные

сложно

В /root/proj лежат a.c и b.c. Напиши Makefile, который «собирает» из каждого .c одноимённый .o (по факту — копирует содержимое). Не пиши два отдельных правила: используй одно шаблонное правило %.o: %.c с автоматическими переменными ($< — исходник, $@ — цель). Добавь цель по умолчанию all: a.o b.o, чтобы голый make собрал оба.

Что потренируешь:
  • make
  • шаблонные правила
  • автопеременные
  • цель по умолчанию

Разбор темы

Шаблонное правило %.o: %.c описывает целый класс целей одной записью: знак % — это «основа» имени, одинаковая у цели и зависимости. Чтобы рецепт не зависел от конкретных имён, в нём используют автоматические переменные: $< подставляет первую зависимость (исходник), $@ — имя собираемой цели. Первая цель в файле становится целью по умолчанию, поэтому отдельная all, зависящая от нужных .o, задаёт, что именно соберёт голый make.

Что проверяется

  1. make собирает a.o и b.o из шаблона

Как это выглядит