我正在写在Perl程序员的文本编辑器(是另一个)呼吁Kephra,这也是理所当然的CPAN模块,并捆绑模块::安装.最近我看到Module :: Build已进入核心,所以如果我切换,我可以减少依赖.是否有其他原因要切换?
我们在组中使用Module :: Build.
主要原因是Easy Extensibility.
Module :: Build允许您通过子类化在纯Perl中完成构建过程.如果您想使用Module :: Install做更多事情,您必须了解Makefile如何工作,AFAIK.既然你可能已经知道Perl,这可能是一个优势.
正如您所说,使用Module :: Build消除了对外部make
程序的依赖,这可以被视为一件好事.
但是,我能想到的主要缺点是:
虽然Module :: Build已经成为核心,但不是每个人都会使用最新版本的Perl.对于使用旧版本核心的用户,您将创建一个新的依赖项.
许多退伍军人(不一定是Perl人)习惯于这种perl Makemaker.PL; make; make install
范式,并且可以通过Build.PL
反而被抛弃.希望这不是什么大不了的事.
Module :: Build在其功能发生变化时偶尔会破坏我们的构建,因为文档没有涵盖我们正在使用的边缘案例.边缘情况随后被更改并记录,但我们必须重新编码我们的子类以使我们的构建再次工作(这在我们最近从0.2808升级到0.3时发生).
尽管如此,我仍然建议Module :: Build只是为了可扩展性.如果这对您来说不是问题,那么最好坚持使用Module :: Install.
嗯,这Module::Build
是一个非常好的模块,它应该是替代品ExtUtils::MakeMaker
,即用Build.PL替换Makefile.PL,它生成Build而不是Makefile.它也意味着"简单的事情应该保持简单,艰难的事情应该是可能的".
Module::Install
采用不同的方法并生成Makefile.
另外,不要忘记不是每个人都运行最新版本的一切:-)
我不记得这些模块的任何比较,但我认为你可以找到一些东西Module::Build
,并Module::Install
各自cpanratings页面.
在"我应该使用哪个框架来编写模块?"之前已经对这个问题进行了一些咀嚼.
在吐出反刍后,我决定使用Module :: Build,但显然可能有不同的答案!(尽管到目前为止我对M :: B感到满意).