有各种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的状态是什么?这是故障还是设计?或者我错过了让它发挥作用的线索?它是什么?
答案 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上。