Makefile как исполняемый скрипт с shebang? - PullRequest
19 голосов
/ 19 августа 2011

Можно ли создать исполняемый скрипт, который будет интерпретироваться командой make?

Я пробовал это:

#!/usr/bin/env make --makefile=/dev/stdin

main:
        @echo Hello!

но не работает - зависает до нажатия Ctrl-c .

Ответы [ 2 ]

24 голосов
/ 19 августа 2011
#!/usr/bin/make -f

main:
        @echo Hello World!

Обычно это все, что вам нужно в стандартном файле make. Имя файла неявно передается в качестве последнего аргумента. /dev/stdin здесь (обычно) tty. Вы можете сделать целую вещь env, если есть причина, но часто нет необходимости.

ajw@rapunzel:~/code/videocc/tools > vi Makefile                       
ajw@rapunzel:~/code/videocc/tools > chmod a+x Makefile         
ajw@rapunzel:~/code/videocc/tools > ./Makefile                 
Hello World!
2 голосов
/ 28 августа 2016

Следующее добавляет уровень косвенности, но это лучшее решение, которое я придумала для самостоятельного выполнения make-файлов, не называемых "make-файлом":

#!/bin/sh
exec make -f- "$@" << 'eof'

.PHONY: all
all:
    @echo 'hello world!'

Я пытаюсь собрать #! env хаки для каждого языка / программы здесь .

...