Как добавить несколько модулей Perl в Makefile.PL? - PullRequest
2 голосов
/ 22 января 2010

Хотите узнать, как добавить несколько файлов 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 ]

5 голосов
/ 23 января 2010

Ответ: ничего не делать. Ваш оригинальный код и верстка в порядке. MakeMaker найдет ваши модули в lib, не поднимая палец. Попробуйте и посмотрите.

Явное выписывание PM, как в ответе инструктора, не нужно и ломко.

3 голосов
/ 22 января 2010

ответ инструмента уже указывает на документы, но я отвечу на другую часть вопроса (хотя она также есть в документах):

NAME - это строка, которую Makemaker использует для имени дистрибутива. Хотя это часто основной модуль, на самом деле он может быть чем угодно.

VERSION_FROM сообщает Makemaker, что он должен взять $VERSION из определенного файла и использовать его в дистрибутивной версии. Чаще всего люди используют версию основного модуля в качестве дистрибутивной версии, но вам не нужно этого делать.

1 голос
/ 22 января 2010

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

...