我应该使用Module :: Install还是Module :: Build?

时间:2008-12-15 18:07:27

标签: perl module

我正在Perl中编写程序员的文本编辑器(是另一个),名为Kephra,当然它也是一个CPAN模块,与Module::Install捆绑在一起。最近我看到Module::Build已进入核心,所以如果我切换,我可以减少依赖。还有其他原因需要转换吗?

3 个答案:

答案 0 :(得分:6)

我们在小组中使用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。

答案 1 :(得分:5)

嗯,Module::Build是一个非常好的模块,它应该是ExtUtils::MakeMaker的替代品,也就是说,用Build.PL替换Makefile.PL,它会生成Build而不是一个Makefile。它也意味着“简单的事情应该保持简单,艰难的事情应该是可能的”。

Module::Install采用不同的方法生成Makefile。

此外,不要忘记并非每个人都运行最新版本的所有内容: - )

我不记得这些模块的任何比较,但我认为您可以从Module::BuildModule::Install各自的cpanratings页面找到一些内容。

答案 2 :(得分:5)

"Which framework should I use to write modules?"

之前,咀嚼片已经被咀嚼了一下

吐出反刍后,我决定和Module::Build一起去,但显然可能有不同的答案! (虽然到目前为止我对M :: B感到满意。)