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

有许多制作软件的MAKE程序,特别是(为了这篇文章的目的)微软NMake,GNU Make和DMake(“Dennis Vadura's Make”)。

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

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

在我看来,在Windows上,GNU Make(它在GnuWin32中 ,并且与MinGW很不错)不受支持,或者没有经过testing; 但是,在欧盟:: MM手册中没有提到这一点。

是什么让我相信这是EU :: MM生成的Makefile for GNU Make根本行不通。 它包含DIRFILESEP = \ (由sub init_DIRFILESEP中的sub init_DIRFILESEP生成),但反斜杠被GNU Make解释为行连续字符,所以它不能工作,因为它会生成错误的path名:

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

如果你修复了这个问题,那么在临时batch file中有另外一个错误(我用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 Make的状态是什么呢? 这是一个小故障或devise? 还是我错过了使其工作的线索? 它是什么?

NMake和DMake是在Windows上构建Perl的唯一受支持的程序。 由于EU :: MM默认使用与生成Perl相同的make ,所以很少有人尝试在Windows上使用GNU Make和EU :: MM,我怀疑这是EU :: MM维护者的高优先级。

所以我会说在设计上不支持在Windows上的EU :: MM + GNU Make。 但是,这更多的是缺乏调试,而不是蓄意拒绝GNU Make。

如果你有兴趣增加对它的支持,我希望他们接受pull请求。 EU :: MM回购在GitHub上。