2011-08-18 75 views
1

我想將使用ExtUtils::MakeMaker的項目轉換爲Module::Build。 由於Makefile.PL大部分是默認的,Module::Build::Convert對我來說不起作用(見下文)我想手動將其轉換,但沒有找到相當於INST_SCRIPT的可執行文件放在Perl的bin /目錄中。什麼是Module :: Build等同於ExtUils :: MakeMaker INST_SCRIPT?

我的WriteMakefile看起來像這樣。

WriteMakefile(
    NAME    => 'Project', 
    AUTHOR    => q{Mugen Kenichi <[email protected]>}, 
    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

如果這就是你的Makefile.PL的樣子,離開它那樣。不要切換到模塊::生成,這似乎是一個放棄的生成系統。沒有人再維護Module :: Build了,直到Leon Timmermans出現了下一件事,除非Module :: Build中的某些功能是必須的,否則沒有理由轉換它。

儘管如此,我創建了腳本文件列表並將其用作script_files的值。這不是很好。看我的Build.PL for Unicode::Tussle

+0

謝謝你的信息和例子。其實我的切換動機的一部分是你的答案(接近兩歲)這裏http://stackoverflow.com/questions/1708332/how-do-i-install-deps-for-cpan-module-without-installing-它/ 1710705#1710705。 –

+0

另一個是我想用MakeMaker錯過的installdeps目標。你能推薦另一個提供它或類似的構建輔助模塊嗎? –

+0

那麼,這個答案仍然存在,但請注意,我強烈認爲使用Module :: Build來說,如果你想偏離標準實踐,你應該使用它。 –

相關問題