В основном для развлечения я создал 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 комментирует, что техника может помешать вам передавать аргументы. Во всяком случае, это не проблема на моей машине Solaris. Все три разные версии «make», которые я тестировал (Sun, GNU, моя), получили дополнительные аргументы командной строки, которые я печатаю, включая опции («-u» в моей домашней версии) и цели «someprogram» и макросы CC = 'cc' WFLAGS = -v (чтобы использовать другой компилятор и отменить флаги предупреждения GCC, которые не понимает компилятор Sun).
Я бы не стал пропагандировать это как общую технику.
Как уже говорилось, это было в основном для моего развлечения. Я могу оставить это для этой конкретной работы; маловероятно, что я бы использовал его в распределенной работе. И если бы я это сделал, я бы поставил и применил скрипт fixin
, чтобы исправить путь к интерпретатору; действительно, я сделал это уже на моей машине. Этот сценарий является реликвией из первого издания книги Camel («Программирование на Perl» Ларри Уолла).