Каковы еще варианты использования команды make?

StackOverflow https://stackoverflow.com/questions/101986

  •  01-07-2019
  •  | 
  •  

Вопрос

Однажды учитель системного администратора сказал мне, что мне следует научиться использовать make, потому что я могу использовать его для множества других вещей, которые просто запускают компиляцию.

У меня так и не было возможности поговорить об этом подольше.У вас есть хороший пример?

В качестве бонуса, не устарел ли этот инструмент и каковы современные альтернативы (для целей компиляции и других)?

Это было полезно?

Решение

Make можно использовать для выполнения любых команд, которые вы хотите выполнить.Его лучше всего использовать для действий, требующих проверки зависимостей, но нет причин, по которым вы не могли бы использовать make для проверки электронной почты, перезагрузки серверов, создания резервных копий или чего-либо еще.

Ant, NAnt и msbuild предположительно являются современными альтернативами, но старый добрый make по-прежнему широко используется в средах, не использующих Java или .NET.

Другие советы

Помимо компиляции есть еще одна замечательная вещь, которую можно использовать, — это LaTeX.Если вы серьезно работаете с LaTeX, вам будет очень удобен режим make, поскольку при использовании BibTex или оглавлений вам придется несколько раз интерпретировать файлы .tex.

Make определенно не устарел.Хотя существуют разные способы сделать одно и то же (пакетные файлы в Windows, сценарии оболочки в Linux), ИМХО, лучше всего работает make.

не правда ли, этот инструмент устарел?

Что?!Нет, даже чуть-чуть.Я использую Linux, поэтому понимаю, что я не обычный человек, но использую его почти каждый день.Я уверен, что есть тысячи разработчиков Linux, которые делать используйте его ежедневно.

Я помню, как видел статью о Слэшдот несколько лет назад описывал метод оптимизации последовательности загрузки Linux с помощью make.

редактировать:

Вот статья от IBM объясняя принцип.

Make выполняет топологическая сортировка, то есть, учитывая кучу вещей и набор требований, согласно которым одна вещь должна быть раньше другой, он находит способ упорядочить все вещи так, чтобы все требования были выполнены.Создание объектов (программ, документов, дистрибутивных архивов и т. д.) является одним из распространенных способов топологической сортировки, но есть и другие.Вы можете создать Makefile с одной записью для каждого сервера в вашем центре обработки данных, включая зависимости между серверами (NFS, NIS, DNS и т. д.), и make может указать вам, в каком порядке включать ваши компьютеры после отключения электроэнергии, или в каком порядке их отключать перед отключением электроэнергии.Вы можете использовать его, чтобы выяснить, в каком порядке запускать службы на одном сервере.Вы можете использовать его, чтобы выяснить, в каком порядке одеваться утром.Любая проблема, в которой вам нужно найти порядок набора вещей или задач, удовлетворяющий множеству конкретных требований вида A, идет перед B, является потенциальным кандидатом на решение с помощью make.

Самое случайное использование, которое я когда-либо видел, — это использование make вместо bash для сценариев инициализации на BCCD.На самом деле это сработало прилично, как только вы преодолели этот чертов момент....

Думайте о make как о скриптах оболочки с добавленной привлекательностью.

Что ж, я уверен, что инструмент UNIX make по-прежнему широко используется, даже если в мире .Net его становится все меньше.И хотя в наши дни все больше людей используют MSBUILD, Ant, nAnt и другие инструменты, по сути, они просто «создают» с другим синтаксисом файлов.Основная концепция та же.

Инструменты Make удобны для всего, где есть входной файл, который преобразуется в выходной файл.Пишите отчеты в MSWord, но распространяйте их в формате PDF?-- используйте make для создания PDF-файлов.

Конфигурационный файл меняется через crontab, если нужный.

У меня есть примеры для postfix карты и для squid внешние таблицы.

Пример для /etc/postfix/Makefile:

POSTMAP=/usr/sbin/postmap
POSTFIX=/usr/sbin/postfix

HASHES=transport access virtual canonical relocated annoying_senders
BTREES=clients_welcome

HASHES_DB=${HASHES:=.db}
BTREES_DB=${BTREES:=.db}

all: ${BTREES_DB} ${HASHES_DB} aliases.db
    echo \= Done

${HASHES_DB}: %.db: %
    echo . Rebuilding $< hash...
    ${POSTMAP} $<

${BTREES_DB}: %.db: %
    echo . Rebuilding $< btree...
    ${POSTMAP} $<

aliases.db: aliases
    echo . Rebuilding aliases...
    /usr/bin/newaliases

и т. д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top