Урок 1. Makefile: первая цель и рецепт - уроки для начинающих
Primary tabs
Forums:
На вводной странице курса мы выяснили, чтоMakefile — это файл-манифест с командами, которые удобно
запускать через утилиту make. Теперь создадим такой файл сами
и выполним первую команду.
Создаём файл
Создайте где угодно папку для экспериментов, зайдите в неё и создайте файл
с именем Makefile — именно так, без расширения:
mkdir lesson01-hello cd lesson01-hello touch Makefile
Откройте файл в редакторе и запишите в него две строки:
hello: echo "Привет, мир!"
Важно: вторая строка начинается с символа TAB, а не с пробелов — ниже
скажу, почему это критично.
Теперь запустите в терминале из этой же папки:
make hello
И увидите:
echo "Привет, мир!" Привет, мир!
Готово — утилита make прочитала файл, нашла цельhello и выполнила её рецепт.
Как это устроено
В нашем файле:
hello:— цель (target), то есть имя команды,
по которому мы её вызываем:make hello- строка ниже — рецепт (recipe): команды, которые выполняются
при вызове цели
Обратите внимание: make сначала напечатал саму команду, а потом её
результат. Так и задумано — в одном из следующих уроков научимся «тихому»
режиму.
Главная ошибка новичка: пробелы вместо TAB
Рецепт обязан начинаться именно с TAB. Если вместо него вставить пробелы,make откажется работать:
make hello Makefile:2: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.
Про эту ошибку есть отдельная заметка с разбором.
Совет: включите в редакторе отображение непечатаемых символов — сразу
будет видно, где TAB, а где пробелы.
Задание
- Добавьте вторую цель, которая приветствует вас по имени, и выполните
её. - Замените в рецепте TAB на пробелы, запустите команду и посмотрите
на ошибку. Верните TAB обратно.
В следующем уроке разберём, какая цель выполняется, если запуститьmake без аргументов, и сделаем цель-справку. Полный план —
в списке уроков курса.
Пример этого урока лежит в репозитории:
lesson01-hello.
- Log in to post comments
- 8 reads