Трюк с маркой заключается в том, что он начинается с конца, с тем, что вы хотите создать, а затем идет назад к началу, чтобы увидеть, что изменилось.
Итак, что в конце: что вы хотите произвести? На основе вашего примера мы сделаем вывод, что вы хотите создать сжатый файл tar с именем lectures.tar.gz
. Итак, нам нужна цель для этого:
lectures.tar.gz:
Что входит в файл tar? в PDF-файлы, которые вы уже обнаружили, как вычислить в переменную OBJ
, поэтому эти вещи должны быть перечислены в качестве предпосылок lectures.tar.gz
:
lectures.tar.gz: $(OBJ)
Что рецепт для этой цели? Он должен создать файл tar с этим именем, содержащий все файлы. Один из способов заключается в следующем:
lectures.tar.gz: $(OBJ)
tar czf lectures.tar.gz $(OBJ)
Другой способ, более общий характер использования automatic variables, будет:
lectures.tar.gz: $(OBJ)
tar czf [email protected] $^
Теперь, как вы создаете OBJ
файлы? Для каждого из них вам необходимо скопировать его из версии .ppt
. Поскольку вы используете GNU make (о чем свидетельствует использование вами функций wildcard
и т. Д.), Вы можете использовать для этого pattern rule; картина такова:
%.pdf : %.ppt
cp $< [email protected]
Эта модель указывает, как создать файл X.pdf
из любого файла X.ppt
, с командой cp
: в этом случае автоматические переменные $<
и [email protected]
необходимы, так как вы не знаете, имена. Это неявное правило, потому что имена явно не перечислены, но подразумеваются шаблоном.
Теперь как вы строите файлы .ppt
? Вы этого не делаете, потому что это исходные файлы, так что все готово!
О да, и 'почему' вы хотите сделать это таким образом? Почему не традиционный сценарий оболочки? Удачи. – shellter
@shellter Я уже создал сценарий оболочки, который работает. Это для домашней работы. Я должен создать сценарий оболочки и make-файл, которые делают то же самое, и я не знаю, что делать с Makefile –