>_ IzzyLab

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

Собери отчёт из всех логов через wildcard

сложно

В /root/proj лежит несколько файлов *.log (заранее неизвестно сколько и как названы). Напиши Makefile с целью report.txt, которая собирает все строки из всех *.log в один отсортированный файл report.txt. Список логов не хардкодь — подхватывай его функцией $(wildcard *.log), и пусть report.txt зависит от этих логов. Голый make должен собрать report.txt.

Что потренируешь:
  • make
  • wildcard
  • переменные makefile
  • зависимости целей

Разбор темы

Функция $(wildcard шаблон) раскрывает маску в список реально существующих файлов на момент чтения Makefile — это способ не хардкодить имена и подхватывать всё, что подходит под шаблон. Сохранив результат в переменную и подставив её в список зависимостей цели, ты заставляешь make пересобирать цель при изменении любого из этих файлов. Обращение к переменной пишется как $(ИМЯ), а рецепт (со строкой на TAB) уже собирает нужный артефакт из этих исходников.

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

  1. make собирает report.txt
  2. report.txt = отсортированные логи

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