У меня есть сценарий оболочки, и я хотел бы преобразовать его в make-файл, чтобы его можно было выполнить с помощью команды make all.
Как мне поступить об этом?
Спасибо
Можно создать минимальный make-файл, содержащий:
all:
YOUR SHELL COMMANDS HERE
Но Вы ничего действительно не получили путем выполнения поэтому, если Вы не переписываете его для использования некоторых функций Make-файла - несколько целей, целевых зависимостей, и т.д. Посмотрите здесь (или много других учебных руководств по Make-файлу) для некоторой информации о том, что можно сделать с make-файлом.
(Обратите внимание, что команды оболочки выполняются с sh
отдельно для каждой строки, поэтому при выполнении чего-либо сложного как циклы, устанавливая переменные, оно будет только работать, и добавлением отступа команд должен быть Символ табуляции, не пробелы.)
Быстрый Make-файл для описанного случая (нормальные предупреждения, вероятно, имеет все виды пограничных случаев, мог бы уничтожить Вашу собаку, и т.д.):
src=$(wildcard pictures/*.jpg)
out=$(subst pictures,thumb,$(src))
all : $(out)
thumb/%.jpg: pictures/%.jpg
convert $< -thumbnail 100 $@
Лучше всего, если вы разделите свои сценарии оболочки на несколько частей. Например. prebuild, build, postbuild. Несколько небольших задач облегчают тестирование сценария.
clean:
rm -rf build
build:
gcc sample.c
changelog:
git log >> changelog.txt
package: changelog build
zip release.zip a.out changelog.txt
all: clean package
clean:
@-rm -rf build
@echo removed
build:
gcc sample.c
changelog:
git log >> changelog.txt
package: changelog build
zip release.zip a.out changelog.txt
all: clean package