ExtUtils :: MakeMaker并支持Windows上的MAKE程序

时间:2012-02-26 16:46:10

标签: windows perl makefile perl-module

有各种MAKE程序来构建软件,特别是(出于本文的目的)Microsoft NMake,GNU Make和DMake(" Dennis Vadura' Make")。

通过ExtUtils :: MakeMaker构建Perl模块时,可以通过MAKE参数指定要使用的MAKE程序。

perl Makefile.PL MAKE=nmake
perl Makefile.PL MAKE=dmake
perl Makefile.PL MAKE=make

在我看来,在Windows上,GNU Make(在GnuWin32中,并且非常适合MinGW)不支持或未经过测试;但是,EU::MM manpage中没有提到这一点。

让我相信这是因为EU :: MM生成的GNU Make的Makefile根本不起作用。它包含DIRFILESEP = \(从sub init_DIRFILESEP中的MM_Win32.pm生成),但反斜杠被GNU Make解释为行继续符,因此它无法生成错误的路径名:

make: *** No rule to make target `C:\Opt\Perl514.64\libConfig.pm',
  needed by `makefile'.  Stop.

如果你解决了这个问题,那么临时批处理文件中的另一个错误(我用make -d观察到这一点)随后会被删除:

syntax error at -e line 1, near "'755')
"
Missing right curly or square bracket at -e line 1, at end of line

使用NMake或DMake当然没问题,也不用担心支持GNU Make,但在这种情况下,应该在文档中警告不要在Windows上使用GNU Make。 (我认为,这是最受欢迎的Make程序。)

那么EU :: MM在Windows上支持GNU的状态是什么?这是故障还是设计?或者我错过了让它发挥作用的线索?它是什么?

1 个答案:

答案 0 :(得分:3)

NMake和DMake是build Perl on Windows唯一支持的程序。由于EU :: MM默认使用用于构建Perl的make,因此很少有人尝试在Windows上使用GNU Make和EU :: MM,我怀疑支持这一点是欧盟的一个高优先级:: MM维护者。

所以我说在Windows上的EU :: MM + GNU Make不受设计支持。但更多的是缺乏专注而不是故意拒绝GNU Make。

如果您有兴趣添加对它的支持,我希望他们接受拉取请求。 EU::MM repo在GitHub上。