有各种各样的MAKE程序来构建软件,特别是(在本文中)微软的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 = \ (从MM_Win32.pm中的sub init_DIRFILESEP生成),但反斜杠被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程序。)
那么在Windows上GNU Make support by EU::MM的状态如何呢?这是一个小故障还是故意的?或者我错过了让它工作的线索?那是什么?
发布于 2012-02-27 02:34:24
NMake和DMake是build Perl on Windows仅支持的程序。由于EU::MM默认使用用于构建Perl的相同make,因此很少有人尝试在Windows上将GNU Make与EU::MM一起使用,我怀疑对它的支持对EU::MM的维护者来说是高度优先的。
所以我想说在Windows上的EU::MM + GNU Make在设计上是不受支持的。但这更多的是缺乏tuits,而不是故意拒绝GNU Make。
如果你有兴趣添加对它的支持,我希望他们会接受拉取请求。EU::MM repo在GitHub上。
https://stackoverflow.com/questions/9454961
复制相似问题