3

寻找有关如何将多个 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'
);
4

3 回答 3

5

答案是:什么都不做。您的原始代码和布局很好。MakeMaker 将在您不费吹灰之力的情况下找到您的模块lib。试试看。

像工具的答案那样明确地写出来PM是不必要且脆弱的。

于 2010-01-22T21:38:46.757 回答
3

toolic 的答案已经将您指向文档,但我将回答问题的另一部分(尽管它也在文档中):

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

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

于 2010-01-22T18:55:07.897 回答
1

也许你可以尝试使用PM. ExtUtils ::MakeMaker文档说:

要安装的 .pm 文件和 *.pl 文件的 Hashref。例如

我浏览了从 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函数的哈希具有重复的键。

于 2010-01-22T14:23:25.360 回答