Si хотите запустить или обновить задачу при обновлении определенных файлов, может пригодиться утилита make. Утилите make требуется файл makefile, который определяет набор задач, которые необходимо выполнить.
Многим из вас это имя будет знакомо, поскольку вы, возможно, использовали make для компиляции программы из исходного кода. В большинстве проектов с открытым исходным кодом make используется для компиляции окончательного исполняемого двоичного файла, который можно установить с помощью make install.
На этот раз давайте разберемся, как этот тип файлов работает в Linux.
Файл makefile Он в основном делится на четыре основных типа утверждений:
- комментарии
- Переменные.
- Явные правила.
- Неявные правила.
Явные правила указывают программе make, какие файлы зависят от других файлов, а также команды, необходимые для компиляции конкретного файла.
В то время как неявные похожи на явные, но с той разницей, что они указывают команды для выполнения, но make использует расширения файлов, чтобы определить, какие команды выполнять.
В этом примере мы не будем использовать последние два, Мы собираемся только начать с вывода классического «Hello World» в терминал.
Для этого мы собираемся создать пустой каталог с желаемым именем.
В этом случае назовем это "создание примера" и внутри этого Мы собираемся создать make-файл со следующим содержанием:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
echo "Hola Mundo"
Сейчас запустите файл, набрав make внутри каталога, вывод будет:
make
echo "Hola Mundo"
Hola Mundo
Как вы можете видеть, когда make-файл был запущен, отображается команда echo «Hello World», за которой следует вывод самой команды. Мы часто этого не хотим. Чтобы подавить этот вывод при запуске make, просто добавьте "@" перед echo:
Практический пример этого:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
Сейчас мы можем снова запустить make-файл. Результат должен показать:
make
Hola Mundo
Это довольно просто. Но, как вы знаете, make-файлы содержат множество вещей, из которых они указывают последовательность, которой нужно следовать.
Мы можем добавить в этот файл несколько простых последовательностей.
Как мы собираемся отредактировать файл следующим образом:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch archivo.txt
При повторном запуске make-файла это выполнит только первую задачу. Это потому, что только первая цель в make-файле является целью по умолчанию.
Выполнение должно выполняться последовательно его необходимо указать в файле «все». «Там» обязаны вызывать другие цели.
all: esta_es_una_variable crear_un_archivo_nuevo
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch archivo.txt
Вы можете снова запустить make, и вы увидите, что внутри каталога находится файл с именем "Файл.txt".
Аналогичным образом возможно выполнить цель внутри файла makefile, это обычно очень часто используется.
Мы собираемся изменить наш файл и добавим в конце следующее:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt
Вы можете повторно запустить make, и он воссоздаст текстовый файл. Как вы увидите, он будет делать то же самое, что и в предыдущий раз. Но теперь мы собираемся выполнить цель, которая находится внутри файла makefile.
Мы делаем это с помощью:
make clean
Благодаря этому мы можем узнать кое-что довольно базовое о файлах make и о том, как они могут быть весьма полезны, если мы хотим автоматизировать некоторые вещи.
Очевидно, вы можете создать более крупный и сложный файл, но это всего лишь пример для новичков (я включаю себя), которые узнают, как это работает.
Очень интересная статья. Вопрос ... то, что вы называете «переменными», не было бы функциями или методами?
Фактически, да, друг мой, спасибо за исправление.
Ура! 🙂
Отлично, надеюсь, ты продолжаешь копать.
Ну ни то, ни другое, https://www.gnu.org/software/make/manual/make.html, являются "целями"
правила
Надеюсь, они продолжат объяснять такие вещи, как «вездесущие и элементарные» повседневной работы Linux, которые никто никогда не объясняет с такой же страстью, как то, как проповедуются эти «преимущества и действие».