>_ IzzyLab

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

Список объектов из wildcard и подстановки

сложно

В /root/proj лежат несколько *.c (сколько и как названы — заранее неизвестно). Напиши Makefile, который сам находит все .c через $(wildcard *.c), получает из их списка список .o подстановкой суффикса ($(SRC:.c=.o)), и собирает каждый .o из .c шаблонным правилом (по факту — копирование). Голый make (цель all) должен собрать .o для каждого .c.

Что потренируешь:
  • make
  • wildcard
  • подстановка суффикса
  • шаблонные правила

Разбор темы

Типовой Makefile избегает захардкоженных имён за счёт трёх механизмов. Функция $(wildcard ...) разворачивается в список реально существующих файлов по шаблону; ссылка с подстановкой суффикса ($(ПЕРЕМ:.c=.o)) превращает один список в другой, меняя расширения; а шаблонное правило %.o: %.c описывает, как получить любой файл одного вида из парного ему. Вместе они дают Makefile, не зависящий от конкретных имён исходников: добавил файл — он подхватывается автоматически.

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

  1. собран .o для каждого .c
  2. использованы wildcard и подстановка суффикса

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