Урок 4. Makefile: переменные
Primary tabs
Forums:
В живых Makefile-ах одни и те же значения — имя приложения, номер порта, путь к конфигам — встречаются в команде за командой. Переписывать их каждый раз утомительно и опасно: забыли поменять в одном месте, и настройки «разъехались». Решение — переменные.
Объявляем и используем
Переменная объявляется строкой вида ИМЯ = значение, а подставляется в рецепт как $(ИМЯ):
APP_NAME = my-app PORT = 8080 CONFIG_DIR = config show: @echo "Приложение: $(APP_NAME)" @echo "Порт: $(PORT)" @echo "Конфиги: $(CONFIG_DIR)/"
Запускаем и получаем:
make show Приложение: my-app Порт: 8080 Конфиги: config/
Теперь, чтобы сменить порт, правим одну строку вверху файла — и все команды, где используется $(PORT), подхватят новое значение. В этом и смысл: значение живёт в одном месте.
Пара деталей
Имена переменных принято писать заглавными буквами — это традиция, а не требование, но так ваши файлы будут читаться как «родные». Писать значения можно и маленькими буквами, если это, например, обычный текст, а не «константа».
И ещё: make просто подставляет текст переменной в команду перед её запуском. Никакой магии — echo "Порт: $(PORT)" превращается в echo "Порт: 8080", и уже её выполняет оболочка.
А @ в рецептах нам уже знаком из урока про тихий вывод.
Задание
- Объявите переменную
AUTHORсо своим именем и добавьте цель, которая приветствует вас по имени — какhelloиз первого урока, но уже с переменной. - Поменяйте значение
PORTи выполнитеmake show— убедитесь, что вывелось новое значение, хотя рецепт вы не трогали.
В следующем уроке вынесем в переменную не значение, а целую команду — и переиспользуем её сразу в нескольких целях. Полный план — в списке уроков курса.
Подробнее о переменных — в справочной заметке. Пример этого урока лежит в репозитории: lesson04-variables.
- Log in to post comments
- 7 reads