如何将多个Perl模块添加到Makefile.PL?

时间:2010-01-22 13:38:38

标签: perl makemaker

寻找有关如何将多个PM文件添加到MakeMaker脚本的一些见解?

我看到this documentation并且所有示例看起来都添加了一个文件,如何添加多个文件?

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 个答案:

答案 0 :(得分:5)

答案是:什么都不做。您的原始代码和布局很好。 MakeMaker将在lib中找到您的模块而无需抬起手指。试试吧,看看。

在工具的答案中明确写出PM是不必要和脆弱的。

答案 1 :(得分:3)

toolic's answer已将您指向文档,但我会回答问题的其他部分(尽管它也在文档中):

NAME是Makemaker用于分发名称的字符串。虽然这通常是主要模块,但它确实可以是你喜欢的任何东西。

VERSION_FROM告诉Makemaker它应该从特定文件中获取$VERSION并在分发版本中使用它。大多数情况下,人们使用主模块的版本作为分发版本,但您不必这样做。

答案 2 :(得分:1)

也许您可以尝试使用PMExtUtils::MakeMaker doc说:

  

.pm文件的Hashref和* .pl文件到   安装。 e.g。

我查看了从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函数的哈希值有重复键。