Как добавить несколько модулей 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 из конкретного файла и использовать его в дистрибутивной версии. Чаще всего люди используют версию основного модуля в качестве дистрибутивной версии, но вам не нужно этого делать.

Другие вопросы по тегам