什么是Module :: Build等效于ExtUils :: MakeMaker INST_SCRIPT?

时间:2011-08-18 09:58:06

标签: perl makemaker module-build

我想将项目从使用ExtUtils::MakeMaker转换为Module::Build。 由于Makefile.PL主要是默认的,Module::Build::Convert对我不起作用(见下文),我想手动转换它,但没有找到相当于INST_SCRIPT的可执行文件放在Perl的bin /目录中。

我的WriteMakefile看起来像这样。

WriteMakefile(
    NAME                => 'Project',
    AUTHOR              => q{Mugen Kenichi <mugen.kenichi@uninets.eu>},
    VERSION_FROM        => 'lib/Project.pm',
    INST_SCRIPT         => 'script/',
    ($ExtUtils::MakeMaker::VERSION >= 6.3002
      ? ('LICENSE'=> 'perl')
      : ()),
    PL_FILES            => {},
    PREREQ_PM => {
        'JSON' => 0,
        'Log::Log4perl' => 0,
        'Proc::Daemon'  => 0,
        'Term::ANSIColor' => 0,
        'MooseX::Declare' => 0.34,
        'MooseX::Log::Log4perl' => 0,
        'Moose::Util::TypeConstraints' => 0,
        'MooseX::Templated::Role' => 0,
        'Template' => 0,
        # for testing
        'Test::More' => 0,
        'MooseX::Params::Validate' => 0,
        'File::Temp' => 0,
        'Sub::Exporter::ForMethods' => 0,
        'Data::Section' => 0,
    },
    dist                => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
    clean               => { FILES => 'Project-*' },
);

我尝试使用Module::Build::Convert但是make2build会抛出我无法解决的错误:

Variable "$regex" will not stay shared at (re_eval 32) line 1.
Use of uninitialized value $lines[0] in pattern match (m//) at /home/mak/perl5/lib/perl5/Module/Build/Convert.pm line 1305, <DATA> line 1.

perl版本:

perl -v

This is perl 5, version 12, subversion 3 (v5.12.3) built for x86_64-linux

1 个答案:

答案 0 :(得分:1)

如果这就是 Makefile.PL 的样子,请保持原样。不要切换到Module :: Build,这似乎是一个放弃的构建系统。没有人维护Module :: Build,直到Leon Timmermans推出下一件事,除非Module :: Build中有一些你必须拥有的功能,否则没有理由转换它。

尽管如此,我创建了脚本文件列表并将其用作script_files的值。它不是很好。查看我的Build.PL for Unicode::Tussle