Как добавить несколько модулей Perl в Makefile.PL?
Хотите узнать, как добавить несколько файлов PM в скрипт MakeMaker?
Я вижу эту документацию, и все примеры выглядят так, как будто добавлен один файл, как мне добавить несколько файлов?
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => 'Your::Module',
VERSION_FROM => 'lib/Your/Module.pm'
);
Должен ли я просто добавить еще один набор значений?
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => 'Your::Module',
VERSION_FROM => 'lib/Your/Module.pm'
NAME => 'Your::Module2',
VERSION_FROM => 'lib/Your/Module2.pm'
);
3 ответа
Возможно, вы могли бы попытаться использовать PM
, Документ ExtUtils::MakeMaker гласит:
Хеш-файл из файлов.pm и *.pl для установки. например
Я просмотрел некоторые другие модули, которые я скачал из CPAN для примера его использования, и я нашел его в коде GD Makefile.PL:
WriteMakefile(
'NAME' => 'GD',
'VERSION_FROM' => 'GD.pm',
'PREREQ_PM' => {
'Math::Trig' => 0,
},
'PM' => { 'GD.pm' => '$(INST_LIBDIR)/GD.pm',
'GD/Polyline.pm' => '$(INST_LIBDIR)/GD/Polyline.pm',
'GD/Polygon.pm' => '$(INST_LIBDIR)/GD/Polygon.pm',
'GD/Simple.pm' => '$(INST_LIBDIR)/GD/Simple.pm',
'GD/Image.pm' => '$(INST_LIBDIR)/GD/Image.pm',
'GD/Group.pm' => '$(INST_LIBDIR)/GD/Group.pm',
'qd.pl' => '$(INST_LIBDIR)/qd.pl'},
Я сомневаюсь, что код, который вы разместили, будет работать, потому что хэш, который вы передаете WriteMakefile
функция имеет дубликаты клавиш.
Ответ: ничего не делать. Ваш оригинальный код и верстка в порядке. MakeMaker найдет ваши модули в lib
без тебя, не поднимая палец. Попробуйте и посмотрите.
Явно выписывать PM
так как в ответе инструментальщика нет необходимости и хрупок.
ответ от toolic уже указывает на документы, но я отвечу на другую часть вопроса (хотя она также есть в документах):
NAME
это строка, которую Makemaker использует для имени дистрибутива. Хотя это часто основной модуль, на самом деле он может быть чем угодно.
VERSION_FROM
говорит Makemaker, что он должен взять $VERSION
из конкретного файла и использовать его в дистрибутивной версии. Чаще всего люди используют версию основного модуля в качестве дистрибутивной версии, но вам не нужно этого делать.