【发布时间】:2012-03-16 07:58:29
【问题描述】:
有多种 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 = \(从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 程序。)
那么 EU::MM 对 Windows 的 GNU Make 支持情况如何?这是一个小故障还是设计使然?还是我错过了让它发挥作用的线索?这是什么?
【问题讨论】:
标签: windows perl makefile perl-module