8

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

4

3 回答 3

6

我们在我们的组中使用Module::Build 。

主要原因是易于扩展

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。

于 2009-02-18T14:57:15.220 回答
5

嗯,Module::Build是一个相当不错的模块,它应该是一个替代品ExtUtils::MakeMaker,也就是说,将 Makefile.PL 替换为 Build.PL,生成一个 Build 而不是 Makefile。这也意味着“简单的事情应该保持简单,困难的事情应该成为可能”。

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

另外,不要忘记不是每个人都运行最新版本的一切:-)

我不记得这些模块的任何比较,但我认为您可以从相应的 cpanratings 页面中找到一些Module::Build东西Module::Install

于 2008-12-15T18:12:19.123 回答
5

之前已经在“我应该使用哪个框架来编写模块?”中对此进行了一些解释。

吐出反刍后,我决定使用Module::Build但显然可能有不同的答案!(尽管到目前为止我对 M::B 很满意)。

于 2008-12-15T19:44:37.847 回答