Что такое Makefile и как он работает в Linux?

Что такое Makefile и как он работает в Linux

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 и о том, как они могут быть весьма полезны, если мы хотим автоматизировать некоторые вещи.

Очевидно, вы можете создать более крупный и сложный файл, но это всего лишь пример для новичков (я включаю себя), которые узнают, как это работает.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   arg0s сказал

    Очень интересная статья. Вопрос ... то, что вы называете «переменными», не было бы функциями или методами?

    1.    Дэвид наранхо сказал

      Фактически, да, друг мой, спасибо за исправление.
      Ура! 🙂

  2.   Pedro сказал

    Отлично, надеюсь, ты продолжаешь копать.

  3.   Мануэль Алькосер сказал

    Ну ни то, ни другое, https://www.gnu.org/software/make/manual/make.html, являются "целями"

  4.   Мануэль Алькосер сказал

    правила

  5.   Sebas сказал

    Надеюсь, они продолжат объяснять такие вещи, как «вездесущие и элементарные» повседневной работы Linux, которые никто никогда не объясняет с такой же страстью, как то, как проповедуются эти «преимущества и действие».