В основном для развлечения я создал makefile
в моем каталоге $HOME/bin
с именем rebuild.mk
и сделал его исполняемым, и первые строки файла гласили:
#!/bin/make -f
#
# Comments on what the makefile is for
...
all: ${SCRIPTS} ${LINKS} ...
...
Теперь я могу ввести:
rebuild.mk
и это приводит к выполнению make
.
Каковы причины не использовать это на постоянной основе, кроме этого:
- Makefile привязан к одному каталогу, поэтому он не подходит для моего основного каталога
bin
.
Кто-нибудь когда-нибудь видел, как этот трюк использовали раньше?
Собираем некоторые комментарии и предоставляем немного дополнительной справочной информации.
- Норман Рэмси сообщает, что этот метод используется в Debian; это интересно знать. Спасибо.
- Я согласен, что печатать «make» более идиоматично.
- Однако сценарий (ранее не указанный) заключается в том, что в моем каталоге $HOME/bin уже есть основной межплатформенный make-файл, который является основным инструментом обслуживания для более чем 500 команд в каталоге.
- Однако на одной конкретной машине (только) я хотел добавить make-файл для создания специального набора инструментов. Таким образом, эти инструменты получают специальный make-файл, который я назвал
rebuild.mk
для этого вопроса (на моей машине он имеет другое имя). - Я могу сэкономить на вводе «
make -f rebuild.mk
», используя вместо этого «rebuild.mk
». - Исправление положения утилиты
make
проблематично на разных платформах. - Техника
#!/usr/bin/env make -f
, вероятно, сработает, хотя я полагаю, что официальные правила взаимодействия таковы, что строка должна быть меньше 32 символов и может иметь только один аргумент для команды. - @dF комментирует, что этот метод может помешать вам передавать аргументы для создания. Во всяком случае, на моей машине с Солярисом это не проблема. Три разные версии make, которые я тестировал (Sun, GNU, моя), все получили дополнительные аргументы командной строки, которые я вводил, включая параметры («-u» в моей домашней версии) и цели «someprogram» и макросы CC ='cc' WFLAGS=-v (для использования другого компилятора и отмены флагов предупреждения GCC, которые компилятор Sun не понимает).
Я бы не рекомендовал это как общую технику.
Как уже говорилось, это было в основном для моего развлечения. Я могу оставить его для этой конкретной работы; маловероятно, что я буду использовать его в распределенной работе. И если бы я это сделал, я бы поставил и применил скрипт 'fixin
', чтобы исправить путь к интерпретатору; действительно, я сделал это уже на своей машине. Этот сценарий является пережитком первого издания книги Camel («Программирование на Perl» Ларри Уолла).