>_ IzzyLab

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

Значение по умолчанию с переопределением

средне

В /root/proj лежит src.txt. Напиши Makefile, где имя результата задаётся переменной NAME со значением по умолчанию app, но так, чтобы его можно было переопределить из командной строки. Цель build копирует src.txt в файл $(NAME). Голый make build создаёт app, а make NAME=prog buildprog.

Что потренируешь:
  • make
  • переменные make
  • условное присваивание
  • приоритет переменных

Разбор темы

Переменные make образуют иерархию приоритетов: значение, переданное в аргументах команды (make ПЕРЕМ=знач), перекрывает присвоенное внутри Makefile. Чтобы задать значение «по умолчанию, если снаружи ничего не пришло», используют оператор условного присваивания, который срабатывает только для ещё не заданной переменной. В рецепте имя подставляется через $(...), поэтому одна и та же цель собирает файл с разным именем в зависимости от вызова.

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

  1. по умолчанию создаётся app
  2. make NAME=prog создаёт prog

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